本文章只是记录一下学习Django后端框架时所做的一些笔记,看个乐就行🥰

前言

咕咕咕😤😤😤

正文

新建django项目

在这里主要介绍两种方法:

  • 命令行创建:
    1
    2
    3
    django-admin startproject [project_name]  # 新建项目
    cd [project_name]
    python manage.py startapp [app_name] # 新建app, 一般来说一个app都是一个完整的模块, 完成一组任务
  • 使用Pycharm创建项目: 没啥好说的, 直接鼠标点点点就完事了。JetBrains全家桶确实好用

django项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[project_name]

├─manage.py
├─[project_name]
│ ├─__init__.py
│ ├─settings.py
│ ├─asig.py
│ ├─wsig.py
│ └─urls.py
├─[app_name] # 一个项目可以有多个app
│ ├─migrations
... ├─__init__.py
├─models.py
├─apps.py
├─views.py
├─tests.py
└─admin.py

各个项目文件的作用

  • project_name:
    • __init__.py:
    • settings.py: 对数据库,应用等进行添加和设置
    • asig.py:
    • wsig.py:
    • urls.py: 添加URL及对应URL下的函数
  • app_name:
    • migrations:
    • __init__.py:
    • models.py: 建立数据库表中需求所需要的表和属性
    • apps.py: 作用域为所属应用而非全局,利用config在settings.py中注册使得应用在项目中可见
    • views.py: 在这个文件中编写所有的请求处理函数
    • tests.py: 用于写测试代码, 方便测试
    • admin.py: 在admin页面注册model, 方便管理自带数据库(不使用自带数据库的可以忽略)

编写代码

这一部分介绍Django框架建表、请求处理函数编写过程中的一些基础点, 附带模板参考

建表相关

这部分主要是在models.py中进行编码

Django中Model的数据类型

定义属性时需要指定字段的数据类型, 具体模板如下:

1
var = models.TypeField(Options)

字段数据类型(TypeField)与数据库数据类型相对应:

  1. AutoField
    • 解释: 根据ID自增长的IntegerField字段。通常用于主键ID,无需使用
  2. IntegerField
    • 解释: 32位整数,可自定义选项
  3. BooleanField
    • 解释: 一个布尔值(true/false)字段
  4. CharField
    • 解释: 一个字符串字段,对小字符串和大字符串都适用。对于大量文本建议使用TextField。
      必须参数:max_length,字段的最大字符数。
  5. DateField
    • 解释: 利用 Python 的 datetime.date 实例来表示日期。
      可选参数DateField.auto_now:每一次保存对象时,Django 都会自动将该字段的值设置为当前时间。一般用来表示 “最后修改” 时间。
      可选参数DateField.auto_now_add:在第一次创建对象时,Django 自动将该字段的值设置为当前时间,一般用来表示对象创建时间。
  6. DateTimeField
    • 解释: 利用 datetime.datetime 实例表示日期和时间。该字段所按受的参数和 DateField 一样
  7. DecimalField
    • 解释: 使用 Decimal 实例表示固定精度的十进制数的字段。
      必须参数DecimalField.max_digits:数字允许的最大位数
      必须参数DecimalField.decimal_places:小数的最大位数
  8. EmailField
    • 解释: 可以看做带有 email 合法性检测的CharField 。
      默认max_length=75
  9. TextField
    • 解释: 超大文本字段
  10. FileField
    • 解释: 文件字段
  11. ImageField
    • 解释: 继承于FileField,确保是有效图片

Django中Model中的字段选项

字段选项(Options):

  1. null: 如果为True, 表示允许为空, 默认值为False
  2. blank: 如果为True, 则该字段允许为空白,默认值为False
  3. db_colunm: 字段名称, 若未指定,则默认为var
  4. db_index: 如果为True, 则在表中会议此字段创建索引, 默认值为False
  5. default: 设置默认值
  6. primary_key: 如果为True, 则该字段会成为模型的主键字段,默认值为False, 一般作为AutoField的选项使用, 当然把其它字段设置为主键也不是不行
  7. unique: 如果为True, 这个字段在表中必须有唯一值, 默认值是False

null是数据库范畴的概念, blank是表单验证范畴的 ps.其实我也暂时没弄清楚, 上学期数据库摸了🤣

外键

在设置外键时, 需要通过设置on_delete选项来指明外键引用表数据如何处理, 在django.db.models中包含了以下可选常量:

  • CASCADE: 级联, 删除主表数据时连同删除外键表中的数据
  • PROTECT: 保护, 通过抛出ProtectedError异常来阻止删除主表中被外键应用的数据
  • SET_NULL: 外键引用表数据设置为NULL, 仅在该字段null=True时才能使用
  • SET_DEFAULT: 设置为默认值,仅在该字段设置了默认值时可用
  • SET(): 设置为特定值或者调用特定方法
  • DO_NOTHING: 不做任何操作, 如果数据库前置指明级联性, 此选项会抛出IntegrityError

项目运行

使用指令运行项目, 这些指令都是在项目文件夹下的terminal输入:

1
2
3
python manage.py makemigrations
python manage.py migrate # 前两步是相当于建表
python manage.py runserver # 实测这一步等价于点击Pycharm的运行