Django的前后端联调

项目流程总结

1.创建项目和子应用

创建项目命令: django-admin startproject 项目名

创建子应用:python manage.py startapp 应用名

2.配置项目

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
  
    'animal',#子应用名
    'rest_framework',
    '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': 'animal',
    }
}
#时区与语言
LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

3.安装数据库

#与项目同名的文件夹下 init.py 内填写

import pymysql
pymysql.install_as_MySQLdb()

4.编写模型类

#子应用下models.py

from django.db import models

# Create your models here.
# 种类Kind模型类,由动物种类kind_name组成
class Kind(models.Model):
    kind_name = models.CharField(max_length=20, verbose_name='种类名')

    class Meta:
        verbose_name = '种类表'
        verbose_name_plural = verbose_name
        db_table = 'kind'#数据库中这个表的表名

    def __str__(self):
        return self.kind_name

# 动物Animal模型类,动物名ani_name、体重weight、高度height、所属种类kind(外键)组成
class Animal(models.Model):
    ani_name = models.CharField(max_length=20, verbose_name='动物名')
    weight = models.IntegerField(verbose_name='体重')
    height = models.IntegerField(verbose_name='高度')
    kind = models.ForeignKey(to=Kind, on_delete=models.CASCADE, verbose_name='种类')

    class Meta:
        verbose_name = '动物表'
        verbose_name_plural = verbose_name
        db_table = 'animal'

    def __str__(self):
        return self.ani_name

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

迁移:python manage.py makemigrations

执行迁移:python manage.py migrate

创建超级用户:python manage.py createsuperuser

#先注册表在创建超级用户才可以添加数据
注册表:

from django.contrib import admin
from animal.models import Animal, Kind

# Register your models here.
admin.site.register(Animal)
admin.site.register(Kind)

6.路由分发:

在子应用下创建子路由

主路由:
from django.contrib import admin
from django.urls import path, include#导入include方法
from animal import urls #导入子路由

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(urls)), #连接子路由
]

子路由:
from django.urls import path
from animal import views #导入子应用中的视图
from rest_framework import routers
urlpatterns = [

]

router = routers.SimpleRouter()
router.register('kind', views.KindView, 'kind')
router.register('ani', views.AnimalView, 'ani')
urlpatterns += router.urls

7.创建序列化器

#需要在子应用中创建序列化器文件
#推荐使用 serializers.py(也可以自定义)

from rest_framework import serializers
from animal.models import Kind, Animal

class KindSerializer(serializers.ModelSerializer):
    class Meta:
        model = Kind
        fields = '__all__'

class AnimalSerializer(serializers.ModelSerializer):
    kind_name = serializers.SerializerMethodField(read_only=True)
    def get_kind_name(self, obj):
        return obj.kind.kind_name

    class Meta:
        model = Animal
        fields = '__all__'


8.编写视图:

from django.shortcuts import render
from animal.models import Kind, Animal
from rest_framework.viewsets import ModelViewSet
from animal.serializers import KindSerializer, AnimalSerializer
from rest_framework.filters import SearchFilter, OrderingFilter

# Create your 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值