一、创建项目
1、创建testBackends项目
django-admin startproject testBackends
2、创建lyb模块应用
(1)cd进入testBackends项目
(2)创建任意项目模块如:lyb
python3 manage.py startapp lyb
3、启动Django项目
python3 manage.py runserver
此时进入网站输入:http://127.0.0.1:8000/
出现下列网页,说明我们的项目创建成功了。
然后我们项目创建的目录结构如下:
二、配置模块应用
把上面创建的lyb模块应用添加到配置里面。位置在testBackends–>settings.py里面
三、安装Django依赖包
Django==4.0
django-cors-headers==3.10.1
djangorestframework==3.13.1
1、安装rest_framework框架
它是基于Django的,帮助我们快速开发符合restful规范的接口框架,它主要适用于前后端分离项目。
Django中文网:https://www.django.cn/course/show-20.html
Django官方文档:https://www.django-rest-framework.org/api-guide/serializers/
普通安装方法pip3 install djangorestframework
2、安装django-cors-headers依赖
django-cors-headers处理跨域请求,一个为响应添加跨源资源共享(CORS)头的Django应用。这允许从其他源向Django应用程序发出浏览器内请求。
普通安装方法pip3 install django-cors-headers
四、添加数据库
在lyb模块里面找到models.py编写代码,来构建数据库
from django.db import models
class Lyb(models.Model):
# 数据库格表字段
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
content = models.TextField()
posttime = models.DateTimeField(auto_now_add=True)
class Meta:
# 数据库名称
db_table = "d_lyb"
然后在中断输入命令:
1、迁移模型,创建表结构
python3 manage.py makemigrations
2、创建数据库表
python3 manage.py migrate
此时我们可以在数据库里面看到创建的对应字段
五、后台的数据进行序列化
1、我们用到Django REST framework框架,此时进入官网,我们按照官网的步骤一步一步做
https://yiyibooks.cn/keltoy/restframework/index.html
进入官网找到快速开始
2、模块下面创建序列化器
官网:
个人操作:
在lyb下面创建serializers.py的新模块,我们将其用于数据表示。然后创建序列化器
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Date : 2022/1/8
# @Name : ZhouZongXin
"""
序列化器
"""
from rest_framework import serializers
from .models import Lyb # 引用数据库文件
class LybSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
# 需要序列化的模型Lyb
model = Lyb
# 需要序列化的字段,"__all__"的意思是所有字段
fields = "__all__"
此时我们序列化器就做好了
六、Views视图层
官网:
个人操作:
"""
视图层
"""
from django.shortcuts import render
from rest_framework import viewsets
from .models import Lyb # Lyb模型
from .serializers import LybSerializer # 序列化器
class LybViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
# 将左右模型进行降序排序order_by('-posttime'),所有查询objects.all()
queryset = Lyb.objects.all().order_by('-posttime')
# 序列化器
serializer_class = LybSerializer
七、路由
官网:
我们进行配置主路由
"""
路由
"""
from django.contrib import admin
from django.urls import path, include # 新增include
from rest_framework import routers # 新增
from lyb.views import LybViewSet # 导入lyb.views内的LybViewSet
router = routers.DefaultRouter()
# 然后把LybViewSet注册到路由器内
router.register(r'lyb', LybViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
# 然后我们把router注册到主路由里面
path('api/', include(router.urls))
]
八、然后把rest_framework注册到设置里面
官网:
个人操作:
rest_framework要在lyb之前进行注册
此时我们在网页输入:http://127.0.0.1:8000/api/lyb/
就可以看到这个页面了。
输入一些内容试试吧。
这个时候后台的数据就添加好了,但是后端要把数据传递到前端,那么就需要一个跨域。如下
九、跨域django-cors-headers的相关配置
之前我们安装过django-cors-headers,此时我们进行django-cors-headers配置
1、注册corsheaders
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'lyb',
]
这里要注意,我们自己定义的模块都要放在后面,依赖包的模块都要放在前面
2、设置中间件
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', # 放最前面
]
3、配置CORS_ORIGIN_ALLOW_ALL
CORS_ORIGIN_ALLOW_ALL: 添加允许执行跨站点请求的主机
# 如果为False,则将不使用白名单,并且将接受所有来源。默认为False,所有的跨域请求都同意
CORS_ORIGIN_ALLOW_ALL = True
当然,我们也可以设置白名单,这样什么方式都能够访问了
# 设置路由的白名单
CORS_ORIGIN_WHITELIST = [
"http://localhost:8000",
"http://127.0.0.1:8000",
]
此时我们后端就已经完成了。