setting相关
# 设置mysql数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'for_django', # 你要存储数据的库名,事先要创建之
'USER': 'root', # 数据库用户名
'PASSWORD': 'root', # 密码
'HOST': 'localhost', # 主机
'PORT': '3306', # 数据库使用的端口
}
}
# 设置中文
LANGUAGE_CODE = 'zh-hans'
# 设置时区
TIME_ZONE = 'Asia/Shanghai'
# 允许所有hosts
ALLOWED_HOSTS = ["*"]
路由相关
# appname/appname/urls.py
from django.urls import path, include
urlpatterns = [
path('projectname/', include('projectname.urls')),
...
]
# appname/projectname/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
model相关
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
published_date = models.DateTimeField('date published')
class Meta():
db_table = 'forksir_question' # 定义表名
verbose_name_plural = '1.问题' # 定义管理界面表标题
def __str__(self):
return self.question_text # 设置默认输出的表字段
Field和字段:
- AutoField: 一个根据实际ID自动增长的IntegerField,通常不指定;如果不指定,一个主键字段将自动添加到模型中
- BooleanField: true/false 字段,此字段的默认表单控制是CheckboxInput
- NullBooleanField: 支持null、true、false三种值
- CharField: (max_length=字符长度): 字符串,默认的表单样式是 TextInput
- TextField: 大文本字段,一般超过4000使用,默认的表单控件是Textarea
- IntegerField: 整数
- DecimalField: (max_digits=None, decimal_places=None) 使用python的Decimal实例表示的十进制浮点数;DecimalField.max_digits=位数总数,DecimalField.decimal_places=小数点后的数字位数
- FloatField: 用Python的float实例来表示的浮点数
- DateField[auto_now=False, auto_now_add=False]): 使用Python的datetime.date实例表示的日期;参数DateField.auto_now:每次保存对象时,自动设置该字段为当前时间,用于”最后一次修改”的时间戳,它总是使用当前日期,默认为false;参数DateField.auto_now_add:当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false;该字段默认对应的表单控件是一个TextInput. 在管理员站点添加了一个JavaScript写的日历控件,和一个“Today”的快捷按钮,包含了一个额外的invalid_date错误消息键;auto_now_add, auto_now, and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果
- TimeField: 使用Python的datetime.time实例表示的时间,参数同DateField
- DateTimeField: 使用Python的datetime.datetime实例表示的日期和时间,参数同DateField
- FileField: 一个上传文件的字段
- ImageField: 继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image
通过字段选项,可以实现对字段的约束;在字段对象时通过关键字参数指定。
- null: 如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False
- blank: 如果为True,则该字段允许为空白,默认值是 False;对比:null是数据库范畴的概念,blank是表单验证证范畴的
- db_column: 字段的名称,如果未指定,则使用属性的名称
- db_index: 若值为 True, 则在表中会为此字段创建索引
- default: 默认值
- primary_key: 若为 True 则该字段会成为模型的主键字段
- unique: 如果为 True, 这个字段在表中必须有唯一值;唯一索引
- auto_now: 创建时生成创建时间
- auto_now_add: 更新时自动更新当前时间
- choices: admin: 默认元组列表,user_type=[(1, “普通用户”), (2, “VIP用户”), (3, “超级用户”)];modesl.IntegerField(choices=user_type);在admin中会自动显示这几个分类,但是对表无影响,可以是任意整数
- verbose_name: admin: 别名,支持中文
- editable: admin: 是否可以被编辑
- error_message: admin: 自定义错误信息
- help_text: admin: 帮助信息
Django命令
- 启动开发服务器
python manage.py runserver
- 运行
python manage.py migrate
来应用数据库迁移 - 对模型文件修改项进行迁移
python manage.py sqlmigrate [projectname]
- 运行
python manage.py makemigrations
为模型的改变生成迁移文件 - 创建管理员账号
python manage.py createsuperuser