登录Django后台
输入网址:http://127.0.0.1:8000/admin
输入创建的账号和密码
数据序列化
Django后台自带了Groups和Users,我们可以对这两个进行数据序列化
在api下创建serializers.py文件
from django.contrib.auth.models import User,Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer): #继承serializers的类
class Meta:
model=User
fields=('url','username','email','group')
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields=('url','name')
创建视图
视图用于如何向用户展示数据,展示哪些数据,比如用户查询User信息或者查询Group信息,那么程序内部要定要好怎么去查询,在Django REST framework中,ViewSets用于定义视图的展现形式,例如返回哪些内容,需要做哪些权限处理。
views.py文件代码:
from django.shortcuts import render #响应http的返回内容
from django.contrib.auth.models import User,Group #导入Django自带的user和group库
from rest_framework import viewsets #viewsets用于视图的展现形式
from api.serializers import UserSerializer,GroupSerializer #导入自定义的两个序列化类
# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all() #查询user表的全部信息
serializer_class = UserSerializer #serializers_class会找到对应的Serializers
class GroupViewSet(viewsets.ModelViewSet):
queryset = Group.objects.all() #查询Group表的全部信息
serializer_class = GroupSerializer
在URL中会定义相应的规则到ViewSets,ViewSets则通过serializers_class找到对应的Serializers.这里将User和Group的所有对象赋予queryset,并返回这些值
在UserSerializer和GroupSerialize中定义要返回的字段。
URL路由配置
urls.py文件代码:
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from rest_framework import routers #导入路由
from api import views
#配置路由
router = routers.DefaultRouter() #生成路由对象
router.register(r'users',views.UserViewSet) #输入users会指向views中的UserViewSet
router.register(r'groups',views.GroupViewSet)#输入groups会指向views中的GroupViewSet
urlpatterns = [
path('admin/', admin.site.urls), #这个路径就是http://127.0.0.1:8000/admin/
path('',include(router.urls)), #这个路径就是http://127.0.0.1:8000/ 后面可以根users或者groups
path('api-auth/',include('rest_framework.urls',namespace='rest_framework'))
]
可以查看配置完的页面
输入网址:http://127.0.0.1:8001/users/
这里看到的url,username,email,group就是序列化里面的配置。
输入地址:http://127.0.0.1:8001/groups/
在Name输入框输入test点击POST
生成了序号为1的test数据,数据内容包含了url,name,就是序列化里面设置的内容。