项目流程总结
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