Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
改动django目录结构,试过么?
太容易都报错了
在开始理解和创建数据模型前,先来改动下已经创建的 django 目录结构,这是未修改前的目录:
分为项目的 manage.py、templates 模板、settings 配置、应用
修改后的目录:
分为项目的 manage.py、templates 模板、config 配置、apps 应用、datasource 存放 sqlite 数据库
在修改 settings 目录名时,需要注意这几个地方的修改:
1. manage.py 文件
2. settings.py 文件
3. wsgi.py 文件
4. 新增的 apps 应用管理
再重新启动 django 项目
再来看下第一季都有哪些可以回顾和用得上的小技能
在用 Pycharm 创建 django 项目的同时,也创建了一个 users 应用,可以在应用的 models.py 文件中创建用户模型。
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.encoding import python_2_unicode_compatible
# Create your models here.
@python_2_unicode_compatible
class UserProfile(AbstractUser):
"""
用户
"""
name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female", verbose_name="性别")
# 电话 null=True blank=True
mobile = models.CharField(max_length=11, verbose_name="电话")
email = models.CharField(max_length=100, null=True, blank=True, verbose_name="邮箱")
class Meta:
verbose_name = "用户"
verbose_name_plural = verbose_name
def __str__(self):
return self.username
AbstractBaseUser中只含有3个field: password, last_login和is_active.
不要忘了在 settings.py 中设置:
AUTH_USER_MODEL = "users.UserProfile"
Django 支持三种继承方式:
1. 抽象基类
2. 多表继承
3. 代理模型
Django 抽象基类和 Python 的抽象基类不同
抽象基类:只有继承的子数据模型才会创建数据表,能在抽象父类中定义共同项来减少重复输入,同时没有多表继承的额外数据表和 join 操作的开销,父类不能单独使用。
多表继承:父类和子类都会创建对应的数据表。两者之间隐含有一个 OneToOneField 关联,因每个数据模型都有表,故可对父子各自进行查询操作。同时可以通过 parent.child 从父对象直接访问子对象,对子表的查询都会有一个与其所有父表的 join 操作。非常不推荐使用多表继承!
代理模型:只为原始数据模型创建数据表,可以为原始数据模型创建一个别名,并添加不同的 Python 行为,无法修改数据模型项。