[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作

目录结构

一、Django数据库配置
    1.数据库迁移
    2.创建超级管理员
二、启动Django Server
    1.启动Django服务
    2.访问Django,验证数据库配置效果
三、数据序列化
四、Django视图创建
五、Django URL路由配置
六、Django API编辑
    1.访问Groups页面
    2.访问Users页面


一、Django数据库配置

1.数据库迁移

切换到项目目录D:\CI_Env\Django_Restful

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第1张图片

执行命令:

python manage.py migrate
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第2张图片

迁移OK,在当前项目目录下生成了一个db.sqlite3数据库文件

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第3张图片
2.创建超级管理员

超管账户的密码要求:位数>=8,(数字+字母)组合

python manage.py createsuperuser
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第4张图片

创建账户信息可根据各自不同设置,本次如下:

Username: admin
Email address: [email protected]
Password: admin123
Password(again): admin123
Bypass password validation and create user anyway? [y/N]: y


二、启动Django Server

1.启动Django服务
python manage.py runserver
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第5张图片
2.访问Django,验证数据库配置效果

1)访问Django前台页面
URL:http://127.0.0.1:8000/

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第6张图片

以上,也可以自定义host、port号,如:
python manage.py 127.0.0.1:8001

2)登录Django管理后台
URL:http://127.0.0.1:8000/admin/

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第7张图片

2个表:Users、Groups

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第8张图片

可以查看用户,修改用户信息

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第9张图片


三、数据序列化

Serializers用于定义API的表现形式,如:返回的字段、数据格式等

本次需要序列化Django自带的User、Group表,相当于是对数据库表设计的初始化。创建数据序列化,需要在API应用(路径:...\Django_Restful\API)下创建 serializers.py 文件,编写代码:

# 导入系统自带的2个表:User,Group
from django.contrib.auth.models import User,Group
# 导入serializers模块
from rest_framework import serializers

# 创建User序列化类,继承内置的方法;定义Users表的相关字段
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta: # 元类
        model = User    # 指向前端首页的Users表
        fields = ('url','username','email','groups') # 配置Users表字段
        # (Users表中的'groups'字段是关联到Groups表的'name'字段)

# 创建Group序列化类;定义Groups表的相关字段
class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group  # 指向Groups表
        fields = ('url','name') # 此处url字段与Users表中的url字段一致(匹配API的url)
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第10张图片


四、Django视图创建

创建视图:视图用于向用户展示数据,如:用户查询User、Group信息,而程序内部需要定义查询信息的规则。在Django REST Framework中,viewsets用于定义视图的表现形式,如:返回的内容、需要做的权限处理。

打开API应用(路径:...\Django_Restful\API)下的views.py文件,编写代码:

from django.shortcuts import render
from django.contrib.auth.models import User,Group
from rest_framework import viewsets
from API.serializers import UserSerializer,GroupSerializer

# Create your views here.

# viewsets通过serializer_class找到对应的serializers
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()   # 将User的所有对象赋给queryset,并返回对应值
    serializer_class = UserSerializer   # 指向UserSerializer(返回定义的字段)

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


五、Django URL路由配置

在目录(...\Django_Restful\Django_Restful\)下打开 urls.py 文件,添加API的路由配置,编辑代码:

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) # 调用register方法,配置Users的路由
router.register(r'groups',views.GroupViewSet)   # 配置Groups路由

# 配置url
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include(router.urls)),  # 代表位于根路径的主域名(http://127.0.0.1:8000)
    # api-auth对应授权登录url
    path('api-auth/',include('rest_framework.urls',namespace='rest_framework'))
]

以上配置完成,启动Django服务的情况下,再次访问Django主页(http://127.0.0.1:8000/),即可查看到显示为API的根路径。
此时,HTTP状态码为403(服务器拒绝请求访问),是因为没有登录管理员账户,无权限查看返回的配置数据。

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第11张图片

点击右上角【Log in】,跳转至登录页面,对应url结构中出现了之前路由配置所设置的 'api-auth/'

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第12张图片

登录超级管理员账户之后,即可查看到HTTP状态码为200,同时也返回了之前路由配置Users和Groups的url

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第13张图片
GET /
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "users": "http://127.0.0.1:8000/users/",
    "groups": "http://127.0.0.1:8000/groups/"
}


六、Django API编辑

参考以上第三步中数据序列化设置的代码,所定义Users表和Groups表的字段如下:

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第14张图片
1.访问Groups页面

URL:http://127.0.0.1:8000/groups/
此时,Groups表中name字段并未设置任何字段值,故响应数据中为空

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第15张图片
设置name字段值

准备2组值,每个值选择分别一种方式设置"name":

"Tester"
"Developer"
  • 方式①:通过HTML form输入提交
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第16张图片
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第17张图片
  • 方式②:通过Raw data数据设置提交
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第18张图片
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第19张图片

查看所有设置的name字段值,如下:

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第20张图片


2.访问Users页面

URL:http://127.0.0.1:8000/users/
此时,Users表的groups字段区域,已展示出以上在Groups表中设置的2个name字段值("Tester"、"Developer"),调用到此处作为groups字段的选择项

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第21张图片

同样可以采用两种方式添加2个用户的信息

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第22张图片
[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第23张图片

查看Users表中所有添加的用户信息,除了超级管理员(admin),还有新增的2个用户(Test00001、Test00002),如下:

[PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作_第24张图片

你可能感兴趣的:([PPJ_15] Django-数据库配置、数据序列化、视图创建、URL路由配置、API编辑操作)