写完了写完了
先说明当前开发的版本
python-->3.6.2
django -->2.0.4
djangorestframework-->3.8.2
django-rest-framework-mongoengine-->3.3.1
mongoengine-->0.15.0
mongo-->3.6.4
操作系统为deepin 15.5beta(操作系统随意,只是我在windows下无法使用uwsgi,如果会的朋友希望你能告诉我方法
postman 6.0.4
pycharm-community 2017.1-1
安装请善用project interpreter
首先创建python空项目,名字随意
创建完成之后,在命令行里cd创建的目录,然后输入
django-admin.py startproject demo .
注意后面的点,表示在此目录下新建,若没有也行,只是会多一层目录
其中这个demo是项目名,可以更改
若windows情况下报错,可以在python目录内找到django-admin.py这个文件,然后将它复制到你的项目根目录,然后命令行输入(大概,具体忘了
python django-admin.py startproject demo .
成功之后能看见新生成的文件
之后创建应用,依旧在命令行输入,这次不需要加点
django-admin.py startapp service
成功之后
现在打开demo目录下的settings.py
在 INSTALLED_APPS 中插入
'rest_framework',
'service.apps.ServiceConfig',
'rest_framework_mongoengine',
其中 1和3 是restful和mongo app的导入
2 是在应用app目录下的apps.py 下的类名
然后 settings.py 中继续添加代码:
from mongoengine import connect
connect('test')
其中 test 是数据库库名,不用提前创建
这样数据库的连接就弄好了,就两行代码
然后把 settings.py 中的 DATABASES 写成:
DATABASES = {
'default': {
'ENGINE': None,
}
}
最后把 ALLOWED_HOSTS修改成:
ALLOWED_HOSTS = ['*']
这里意思是允许任何ip访问,当然不想的朋友也能够自己写允许访问的ip
然后打开 service 目录下的 models.py ,这里是定义数据表结构的类,这里我们简单弄弄:
import mongoengine
class User(mongoengine.Document):
# 默认id
# 名字,字符串字段,最大长度36位,默认字符KirisameMarisa,允许为空
name = mongoengine.StringField(max_length=36, default='KirisameMarisa')
# 年龄,整型字段,最大长度5,不允许位空
age = mongoengine.IntField(max_length=5, null=False)
# 更多字段请百度
然后在 service 目录下新建 serializers.py :
from .models import User
from rest_framework_mongoengine import serializers as mongo_serializers
# 名字随意
class UserSerializer(mongo_serializers.DocumentSerializer):
class Meta:
# 对应类名
model = User
# 各个字段,其中_id是默认id字段
fields = ('id', 'name', 'age')
然后在 service 目录下 views.py 添加代码(views是写数据传入后要执行的操作):
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import User
from .serializers import UserSerializer
# 规定该方法只能通过post、get和delete请求
@api_view(['POST', 'GET', 'DELETE'])
# request就是你的请求
def user_api(request):
# 如果请求是get
if request.method == 'GET':
# 获取user表全部的用户
users = User.objects.all()
# 将获取结果序列化,当many=True的时候才允许返回多条数据,不然报错
serializer = UserSerializer(users, many=True)
# serializer.data是一个字典,status是状态码,2XX是成功返回
return Response(serializer.data, status=status.HTTP_200_OK)
# 如果请求是post
elif request.method == 'POST':
# request.d