django基础
# 开始
1.安装django:pip install django==4.1 (django4.1需要python3.8以上版本)
2.创建django项目:django-admin startproject django_demo
3.创建app:django-admin startapp admin (python manage.py startapp admin)
4.为模型的改变生成迁移文件:python manage.py makemigrations admin ,可以不指定app,执行所有app
5.查看sql:python manage.py sqlmigrate admin 0001
6.迁移数据库表到数据库中:python manage.py migrate admin ,可以不指定app,执行所有app
运行项目:
python manage.py runserver (默认启用8000端口)
python manage.py runserver 8080 (启用8080端口)
python manage.py runserver 0.0.0.0:8080 (0.0.0.0可简写为0、监听所有服务器的公开IP)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# requirements.txt
# 生成 requirements.txt
pip freeze > requirements.txt
# 安装:
pip install -r requirements.txt
1
2
3
4
5
2
3
4
5
# models-Field
Field常用参数:
1.default:该字段的默认值。可以是一个值或者是个可调用的对象,如果是个可调用对象,每次实例化模型时都会调用该对象。
2.primary_key:如果设置为 True ,将该字段设置为该模型的主键;有为模型中的任何字段指定 primary_key=True,Django 会自动添加一个字段来保存主键。
primary_key=True 意味着 null=False 和 unique=True。一个对象只允许有一个主键。主键字段是只读的。如果您改变了现有对象的主键值,然后将其保存,则会在旧对象旁边创建一个新对象。
3.unique:如果设置为 True,这个字段必须在整个表中保持值唯一;当为 True 时,你不需要指定 db_index,因为 unique 意味着创建一个索引。
4.verbose_name:字段注释
5.validators:验证器,值为列表或元组,可以传多个验证方法/类 参考django自带的验证器:django\core\validators.py
6.db_index:如果是 True,将为该字段创建数据库索引。
7.db_column:自定义列名(自定义字段名)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# models-自定义 Field
文档:https://docs.djangoproject.com/zh-hans/4.1/howto/custom-model-fields/
若自定义 Field 处理的数据结构比字符串,日期,整型,或浮点型更复杂,你可能需要重写 from_db_value() 和 to_python()。
若要展示字段的子类, from_db_value() 将会在从数据库中载入的生命周期中调用,包括聚集和 values() 调用。
to_python(value) 将值转换为正确的 Python 对象。它的作用与 value_to_string() 相反,并且在 clean() 中也被调用。
使用数据库需要双向转换,如果你重写了 from_db_value() 方法,你也必须重写 get_prep_value() 将 Python 对象转回查询值。
将查询值转为数据库值 get_db_prep_value() 实现了这种转换。
万一自定义字段需要与普通查询参数使用的转换不同的转换规则,你可以重写 get_db_prep_save()。
get_db_prep_save(value, connection)与 get_db_prep_value() 相同,但当字段值必须 保存 到数据库中时,会被调用。默认情况下返回 get_db_prep_value()。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 单独运行 py 文件,如果有关联到 django 库,比如引用了 model
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ps.settings')
django.setup()
1
2
3
4
2
3
4
上次更新: 2023/08/08, 20:00:46