Django学习笔记
本文章只是记录一下学习Django后端框架时所做的一些笔记,看个乐就行🥰
前言
咕咕咕😤😤😤
正文
新建django项目
在这里主要介绍两种方法:
- 命令行创建:
1
2
3django-admin startproject [project_name] # 新建项目
cd [project_name]
python manage.py startapp [app_name] # 新建app, 一般来说一个app都是一个完整的模块, 完成一组任务 - 使用Pycharm创建项目: 没啥好说的, 直接鼠标点点点就完事了。
JetBrains全家桶确实好用
django项目结构
1 | [project_name] |
各个项目文件的作用
- 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)与数据库数据类型相对应:
- AutoField
- 解释: 根据ID自增长的IntegerField字段。通常用于主键ID,无需使用
- IntegerField
- 解释: 32位整数,可自定义选项
- BooleanField
- 解释: 一个布尔值(true/false)字段
- CharField
- 解释: 一个字符串字段,对小字符串和大字符串都适用。对于大量文本建议使用TextField。
必须参数:max_length,字段的最大字符数。
- 解释: 一个字符串字段,对小字符串和大字符串都适用。对于大量文本建议使用TextField。
- DateField
- 解释: 利用 Python 的 datetime.date 实例来表示日期。
可选参数DateField.auto_now:每一次保存对象时,Django 都会自动将该字段的值设置为当前时间。一般用来表示 “最后修改” 时间。
可选参数DateField.auto_now_add:在第一次创建对象时,Django 自动将该字段的值设置为当前时间,一般用来表示对象创建时间。
- 解释: 利用 Python 的 datetime.date 实例来表示日期。
- DateTimeField
- 解释: 利用 datetime.datetime 实例表示日期和时间。该字段所按受的参数和 DateField 一样
- DecimalField
- 解释: 使用 Decimal 实例表示固定精度的十进制数的字段。
必须参数DecimalField.max_digits:数字允许的最大位数
必须参数DecimalField.decimal_places:小数的最大位数
- 解释: 使用 Decimal 实例表示固定精度的十进制数的字段。
- EmailField
- 解释: 可以看做带有 email 合法性检测的CharField 。
默认max_length=75
- 解释: 可以看做带有 email 合法性检测的CharField 。
- TextField
- 解释: 超大文本字段
- FileField
- 解释: 文件字段
- ImageField
- 解释: 继承于FileField,确保是有效图片
Django中Model中的字段选项
字段选项(Options):
null
: 如果为True
, 表示允许为空, 默认值为False
blank
: 如果为True
, 则该字段允许为空白,默认值为False
db_colunm
: 字段名称, 若未指定,则默认为var
db_index
: 如果为True
, 则在表中会议此字段创建索引, 默认值为False
default
: 设置默认值primary_key
: 如果为True
, 则该字段会成为模型的主键字段,默认值为False
, 一般作为AutoField的选项使用,当然把其它字段设置为主键也不是不行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
3python manage.py makemigrations
python manage.py migrate # 前两步是相当于建表
python manage.py runserver # 实测这一步等价于点击Pycharm的运行
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Takune の Blog!
评论