我是靠谱客的博主 合适冬瓜,这篇文章主要介绍前后端分离项目配置流程1.创建项目和子应用2.配置项目3.安装数据库4.编写模型类5.迁移、注册表、创建超级用户、添加测试数据6.路由分发7.序列化器8.编写视图,现在分享给大家,希望可以做个参考。

1.创建项目和子应用

在指定位置输入cmd打开命令行,输入命名创建项目:django-admin startproject 项目名
把新建的项目拖到pycharm中打开,输入命令创建子应用:python manage.py startapp 子应用名
运行项目的命令:python manage.py runserver

2.配置项目

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'game',  # 注册子应用
    'rest_framework',  # drf框架
    'corsheaders',  # 跨域
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'corsheaders.middleware.CorsMiddleware',  # 跨域中间件
]

CORS_ORIGIN_ALLOW_ALL = True # 允许所有源访问

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'localhost',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': 'root',
        'NAME': 'test',
    }
}

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

3.安装数据库

与项目同名的文件夹下的__init__.py文件:

import pymysql
pymysql.install_as_MySQLdb()  # 安装mysql

使用黑窗口创建数据库:

mysql -uroot -p 进入mysql数据库

show databases; 查看所有数据库

drop database book; 如果数据库存在,删除数据库

create database book charset=utf8;创建数据库

4.编写模型类

from django.db import models

class BookInfo(models.Model):
    # 书名、发布日期、阅读量、评论量、售空
    # 书名 字符串类型 max_length=20最大长度为20
    name = models.CharField(max_length=20, verbose_name='书名')
    # 发布日期 日期类型 null=True允许为空
    pub_date = models.DateField(null=True, verbose_name='发布日期')
    # 阅读量 整形 default=0默认为0
    read_count = models.IntegerField(default=0, verbose_name='阅读量')
    # 评论量 整形 default=0默认为0
    comment_count = models.IntegerField(default=0, verbose_name='评论量')
    # 售空 布尔类型 default=False默认为假
    sale_out = models.BooleanField(default=False, verbose_name='售空')

    class Meta:
        db_table = 'bookinfo'  # 指明数据库表名,如果不设置会叫books_BookInfo
        verbose_name = '书籍信息表' # 在admin站点中显示的名称
        verbose_name_plural = verbose_name# 在admin站点中显示的名称复数

    def __str__(self):
        """定义每个数据对象的显示信息"""
        return self.name

5.迁移、注册表、创建超级用户、添加测试数据

生成迁移文件:python manage.py makemigrations
执行迁移: python manage.py migrate
创建超级用户、注册表和添加测试数据
命令:python manage.py createsuperuser

6.路由分发

进入与项目同名的文件夹下的urls.py文件,配置路由
from django.contrib import admin
from django.urls import path
from myapp import views # 导入视图

urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘myview/’, views.MyView), # 配置路由

7.序列化器

序列化:ORM操作的数据 -> JSON数据 查询

反序列化:JSON数据 -> ORM操作的数据 添加和修改

序列化器:用于实现序列化和反序列化的工具。

# 在子应用下新建serializers.py文件
from rest_framework import serializers  # 导入
from game.models import Game

# 定义一个普通序列化器,用于处理Game模型类相关的数据
class GameSerializer(serializers.Serializer):
    # 映射字段
    id = serializers.IntegerField()  # 添加id字段
    name = serializers.CharField(max_length=20)
    kind = serializers.CharField(max_length=20)
    score = serializers.IntegerField()
    age = serializers.IntegerField()

    # 实现增加功能时需要实现create方法
    # validated_data时要添加的数据
    # ** 拆包
    def create(self, validated_data):
        result = Game.objects.create(**validated_data)
        return result  # 返回结果

    # 实现更新功能需要实现update方法
    # instance要更新的orm对象
    # validated_data去更新这个对象的数据
    def update(self, instance, validated_data):
        instance.id = validated_data.get('id')
        instance.name = validated_data.get('name')
        instance.kind = validated_data.get('kind')
        instance.score = validated_data.get('score')
        instance.age = validated_data.get('age')
        instance.save()  # 保存更新的数据
        # 修改数据2中方法 1.update 2.save
        return instance

8.编写视图

使用序列化器实现增删改查操作。(查询所有数据、查询单个数据、增加一个数据、修改数据、删除一个数据)

动态路由:删除delete、修改put、查询单个数据get

静态路由:查询所有数据get、增加post

通过分析,使用2个类视图实现增删查改功能。

# 使用序列化器会用到的参数:instance 实例ORM操作数据   data JSON数据
# def func(instance, data)
# 调用函数 位置参数: func(instance=a,data=b) -> func(a,b)  func(instance=a)-> func(a)
# 调用函数 指定参数: func(data=a, instance=b)  func(data=a)  

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from game.models import Game
from game.serializer import GameSerializer

# Create your views here.
# 实现游戏角色的查询全部 和 添加
class GameView1(APIView):
    def get(self, request):  # 1
        # ORM操作数据 -》 json数据  序列化
        # 获取全部游戏信息 ORM操作数据
        games_data = Game.objects.all()
        # 使用序列化器,实现序列化
        # 多个数据需要加上 many=True
        ser = GameSerializer(games_data, many=True)
        # 注意返回的时ser.data 而不是ser
        return Response(ser.data)


    def post(self, request):  # 2 增加数据
        # request.data 就是前端提交的json数据
        # 1.使用序列化器进行反序列化,data参数就是要反序列化的数据
        ser = GameSerializer(data=request.data)
        # 2.校验  参数raise_exception=True,出现异常时自动抛出异常
        if ser.is_valid(raise_exception=True):
            # 3.保存
            ser.save()
            return Response({'msg':'添加数据成功'}, status=201)
        return Response({'msg': '添加数据失败'}, status=500)



# 根据id 实现 单个 查询 修改 删除
class GameView2(APIView):
    def get(self, request, id):  # 3
        # 根据id获取数据,单个数据
        try:
            game_data = Game.objects.get(id=id)
        except Exception as e:
            print(e)
            return Response({'msg':'数据不存在'}, status=404)
        ser = GameSerializer(game_data)
        return Response(ser.data, status=200)

    def put(self, request, id):  # 4 反序列化之更新
        # 1.获取要更新的数据 ORM操作的数据->instance
        try:
            game_data = Game.objects.get(id=id)
        except Exception as e:
            print(e)
            return Response({'msg':'数据不存在'}, status=404)
        # 2.反序列化 game_data要更新的orm对象 request.data去更新这个对象的数据
        ser = GameSerializer(instance=game_data, data=request.data)
        # 3.校验
        if ser.is_valid(raise_exception=True):
            # 4.保存
            ser.save()
            return Response({'msg':'更新数据成功'}, status=201)
        return Response({'msg':'更新数据失败'}, status=500)

    def delete(self, request, id):  # 5
        pass

最后

以上就是合适冬瓜最近收集整理的关于前后端分离项目配置流程1.创建项目和子应用2.配置项目3.安装数据库4.编写模型类5.迁移、注册表、创建超级用户、添加测试数据6.路由分发7.序列化器8.编写视图的全部内容,更多相关前后端分离项目配置流程1内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部