Django--前后端分离-后端(一)简单实现一个留言板demo

一、创建项目

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",
]

此时我们后端就已经完成了。

十、postman调用接口

1、get获取数据

在这里插入图片描述

2、post添加数据

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChatGPT-千鑫

在线乞讨,行行好吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值