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内容请搜索靠谱客的其他文章。
发表评论 取消回复