Django前后端分离之REST framework初试

之前刚学django时硬生生使用了静态资源和接口分离的方法,实际使用中肯定会非常不方便。于是发现了用于前后端分离,编写后台API的REST framework框架。这里做初步尝试
官方文档看起来非常入门
本次实践主要是根据官方文档步骤进行初步实践,其中加入一些自己学习时理解的注释,不能保证翻译正确,所有的参考链接都放在文末吧。
但是!学习过程中发现两处引用模块官网有误!代码中会标注出来
官方文档地址先放:
http://www.django-rest-framew…

一、项目安装

首先是安装django和djangorestframework

pip install django
pip install djangorestframework

多数人都应该安装好了吧

根据按官网demo安装应用

django-admin.py startproject tutorial
django-admin.py startapp quickstart

然后是数据库迁移

python manage.py migrate

接着创建管理员页面和用户

python manage.py createsuperuser --email admin@example.com --username admin

二、Serializer(序列化器)配置

定义一些配置,创建一个tutorial/quickstart/serializers.py模块,编写如下代码

from django.contrib.auth.models import User, Group #引入django身份验证机制User模块和Group模块
from rest_framework import serializers #引入rest framework的serializers

class UserSerializer(serializers.HyperlinkedModelSerializer): #继承超链接模型解析器
    class Meta:
        model = User #使用User model
        fields = ('url', 'username', 'email', 'groups') #设置字段

class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group  #使用Group model
        fields = ('url', 'name')

三、视图配置

tutorial/quickstart/views.py编写如下代码(render都可以注释掉了???)
这里有一处官网引入模块错误

#from django.shortcuts import render
from django.contrib.auth.models import User, Group #引入model
from rest_framework import viewsets #引入viewsets,类似controllers
# from tutorial.quickstart.serializers import UserSerializer, GroupSerializer 官网模块引入写法,有误
from quickstart.serializers import UserSerializer, GroupSerializer #引入刚刚定义的序列化器

# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all().order_by('-date_joined') #集合
    serializer_class = UserSerializer  #序列化

class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

四、URL

tutorial/urls.py编写URL
这里有一处官网引入模块错误

from django.contrib import admin
from django.urls import path, re_path
#rest
from django.conf.urls import url, include
from rest_framework import routers
# from tutorial.quickstart import views  官网模块引入写法,有误
from quickstart import views
router = routers.DefaultRouter() #路由
router.register(r'users', views.UserViewSet) #路由地址与接口配置
router.register(r'groups', views.GroupViewSet)

#注:path是新写法,url为老写法,若要使用正则,则使用re_path
urlpatterns = [
    path('admin/', admin.site.urls),
    #rest
    re_path(r'^', include(router.urls)), #包含进路由配置的url
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) #浏览器测试接口配置
]

五、设置

tutorial/settings.py下安装

INSTALLED_APPS = (
    ...
    'rest_framework',
)

六、打开浏览器测试

python manage.py runserver

启动服务器后浏览器输入http://127.0.0.1:8000可进入接口测试页面

记得在右上角处点击登录

七、参考链接

django用户验证机制:https://docs.djangoproject.co…
什么是Serializer:http://www.django-rest-framew…
什么是Serializer relations:http://www.django-rest-framew…
什么是viewsets:http://www.django-rest-framew…
url和re_path中r是什么:https://www.cnblogs.com/xuchu…
url与path区别:https://blog.csdn.net/endless…

    原文作者:Jonithan
    原文地址: https://segmentfault.com/a/1190000016291004
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞