<python模块>djangorestframework
目录:
创建项目
启动新项目
$ django-admin.py startproject myProject
$ python manage.py startapp api
将api加入到setting中
INSTALLED_APPS = [
...
'api',
]
设置管理员
$ python manage.py createsuperuser
添加djangorestframework
安装依赖
$ pip install djangorestframework
在setting中配置依赖
INSTALLED_APPS = [
....
'rest_framework',
]
创建models
写一个简单的models
class Student(models.Model):
name = models.CharField(u'姓名', max_length=100, default='no_name')
sex = models.CharField(u'性别',max_length=50,default='male')
sid = models.CharField(u'学号',max_length=100,default='0')
def __unicode__(self):
return '%d: %s' % (self.pk, self.name)
同步数据库
$ python manage.py makemigrations
$ python manage.py migrate
在admin.py中接入
from .models import Student
@admin.register(Student)
class BlogTypeAdmin(admin.ModelAdmin):
list_display = ('pk', 'name')
然后启动
$ python manage.py runserver
在127.0.0.1:8000/admin中可以加入数据
使用restful
在api目录下添加serializers.py用于序列化
说简单点就是通过实体模型从数据库中获取数据然后转化为通用格式json的资源
from rest_framework import serializers
from .models import Student
class StudentSerializers(serializers.ModelSerializer):
class Meta:
model = Student #指定的模型类
fields = ('pk', 'name', 'sex', 'sid',)
设置视图,restfulapi中提供了很多视图,这边使用viewsets
api/views.py
from rest_framework import viewsets
from .models import Student
from .serializers import StudentSerializers
# Create your views here.
class StudentViewSet(viewsets.ModelViewSet):
# 指定结果集并设置排序
queryset = Student.objects.all().order_by('-pk')
# 指定序列化的类
serializer_class = StudentSerializers
设置路由
api/urls.py
from django.conf.urls import include,url
from rest_framework import routers
from api import views
# 定义路由地址
route = routers.DefaultRouter()
# 注册新的路由地址
route.register(r'student' , views.StudentViewSet)
# 注册上一级的路由地址并添加
urlpatterns = [
url('api/', include(route.urls)),
]
在总的urls中包含这个urls即可
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('api.urls')), #添加的路由地址
]
测试用例
查看API视图
$ curl -XGET http://127.0.0.1:8000/api/
查看所有学生
$ curl -XGET http://127.0.0.1:8000/api/student/
查看具体学生
$ curl -XGET http://127.0.0.1:8000/api/student/3/
添加学生
$ curl -XPOST http://127.0.0.1:8000/api/student/ -d "name=why&sex=boy&sid=142"
修改学生
$ curl -XPUT http://127.0.0.1:8000/api/student/5/ -d "name=why&sex=boy&sid=141"
删除学生
$ curl -XDELETE http://127.0.0.1:8000/api/student/5/