setting相关

  1. # 设置mysql数据库:
  2. DATABASES = {
  3. 'default': {
  4. 'ENGINE': 'django.db.backends.mysql', # 数据库引擎
  5. 'NAME': 'for_django', # 你要存储数据的库名,事先要创建之
  6. 'USER': 'root', # 数据库用户名
  7. 'PASSWORD': 'root', # 密码
  8. 'HOST': 'localhost', # 主机
  9. 'PORT': '3306', # 数据库使用的端口
  10. }
  11. }
  12. # 设置中文
  13. LANGUAGE_CODE = 'zh-hans'
  14. # 设置时区
  15. TIME_ZONE = 'Asia/Shanghai'
  16. # 允许所有hosts
  17. ALLOWED_HOSTS = ["*"]

路由相关

  1. # appname/appname/urls.py
  2. from django.urls import path, include
  3. urlpatterns = [
  4. path('projectname/', include('projectname.urls')),
  5. ...
  6. ]
  7. # appname/projectname/urls.py
  8. from django.urls import path
  9. from . import views
  10. urlpatterns = [
  11. path('', views.index, name='index'),
  12. ]

model相关

  1. from django.db import models
  2. class Question(models.Model):
  3. question_text = models.CharField(max_length=200)
  4. published_date = models.DateTimeField('date published')
  5. class Meta():
  6. db_table = 'forksir_question' # 定义表名
  7. verbose_name_plural = '1.问题' # 定义管理界面表标题
  8. def __str__(self):
  9. 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