复习DRF视图
-
Django REST framework是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用。
-
它提供了序列化器Serialzier & ModelSerializer 的定义,可以帮助我们简化序列化与反序列化的过程,
-
提供丰富的类视图、扩展类、视图集来简化视图的编写工作。
-
还提供了认证、权限、频率、过滤、分页、接口文档等功能。
-
REST framework提供了一个API 的Web可视化界面, 方便查看、测试接口。
特点
-
提供了定义序列化器的方法,可以快速将 模型类对象转为字典,便于序列化;
-
提供了丰富的类视图、Mixin扩展类,简化视图的编写;
-
丰富的定制层级:函数视图、类视图、视图集合到自动生成 API,满足各种需要;
-
多种身份认证和权限认证方式的支持;[jwt]
-
内置了限流系统;
-
直观的 API web 界面;【方便我们调试开发api接口】
-
可扩展性,插件丰富
创建django项目
创建项目 django-admin startproject 项目名
配置drf & 中间件 & mysql 数据库
配置代码
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',# drf框架
'corsheaders',# 注册跨域
'users'# 用户APP
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'corsheaders.middleware.CorsMiddleware',# 添加跨域中间件
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'p6_421',
'USER': 'root',
'PASSWORD': 'lh020630',
'HOST': 'localhost',
'PORT': 3306,
}
}
配置静态文件static
在项目根目录创建目录"static"
STATIC_URL = '/static/'
STATICFILES_DIRS= (os.path.join(BASE_DIR,'static'),)#静态文件配置
创建django应用users
进入到项目创建应用 django-admin startapp 应用名
定义users模型类
# 模型类代码
from django.db import models
# Create your models here.
# 基类
class BaseModel(models.Model):
created_time = models.DateTimeField("创建时间", auto_now_add=True)
updated_time = models.DateTimeField("更新时间", auto_now=True)
is_delete = models.BooleanField(default=False)
# 部门模型类
class Department(BaseModel):
name = models.CharField("部门",max_length=50)
class Meta:
db_table = 'department'
def __str__(self):
return self.name
# 职责模型类
class Duty(BaseModel):
name = models.CharField("工作职责",max_length=50)
def __str__(self):
return self.name
class Meta:
db_table = 'duty'
# 员工模型类
class Staff(models.Model): # 不能也继承BaseModel,会冲突
SEX_CHOICE = (
(1, '男'),
(0, '女')
)
name = models.CharField("姓名", max_length=30)
sex = models.SmallIntegerField("性别", default=1, choices=SEX_CHOICE) # choices选项
phone = models.CharField("手机号", max_length=11)
email = models.CharField("邮箱", max_length=50)
Department = models.ForeignKey(Department, on_delete=models.CASCADE)
Duty = models.ForeignKey(Duty, on_delete=models.CASCADE)
def __str__(self):
return self.name
class Meta:
db_table = 'staff'
生成迁移文件、执行迁移文件
python manage.py makemigrations
python manage.py migrate
启动django项目 python manage.py runserver