项目里添加一个应用:
python manage.py startapp 应用名
1、要在项目的settings.py里注册此应用
2、需要在urls.py里写入路由表urlpatterns,有path或re_path两种。
3、需要在views.py里写相应视图函数
一个应用可以有N多的路由,对应浏览器里不同的页面呈现。
Django的内部流程
用Django写的web项目,用户通过url访问时,Django里的路由会根据不同url匹配相应的视图,视图会通过模型的objects对象到数据库中获取需要的数据,然后将数据交给模板进行渲染,最后将渲染好的页面返回给用户。Django项目是通过http协议实现数据的传输。
request请求的构成
HTTP请求信息由3部分组成:
1、请求方法(method)、URL、协议/版本;
2、请求头(Request Header);
3、请求正文。
HTTP请求方法非常多,GET, POST, HEAD, PUT等。其中,GET、POST最常见。
response响应的构成
HTTP请求信息由3部分组成:
1、协议/版本、状态码及状态;
2、响应头(Request Header);
3、响应体。
常见的状态码及状态:
汉化
Django的界面管理默认是英文的,我们可以修改配置将其汉化。
进入project/settings.py中把LANGUAGE_CODE和TIME_ZON配置项改为:
LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai'
如此操作,当我们重新打开127.0.0.1:8000/admin时,界面管理即是中文。
常见字段类型
AutoField:自动增长的IntegerField,通常不用指定,不指定时Django 会自动创建属性名为id的自动增长属性
BooleanField:布尔字段,值为True或者False
NullBooleanField:支持Null、True、False
CharField:字符串,参数max_length表示最大字符个数
TextField:大文本字段,一般超过4000个字符时使用
IntegerField:整数
DecimalField:十进制浮点数,参数max_digits表示总位数,参数decimal_places表示小数位数
FloatField:浮点数
DateField:日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误
TimeField:时间,参数同DateField
DateTimeField:日期时间,参数同DateField
FileField:上传文件字段
ImageField:继承于FileField,对上传的内容进行校验,确保是有效的图片
常见的字段选项
下面是部分常见的字段选项:
primary_key: 指定是否为主键,True表示为主键。
unique: 指定是否唯一,True表示是唯一的。
null: 指定是否为空,默认为False。
blank: 等于True时form表单验证时可以为空,默认为False。
default: 设置默认值。
auto_now: 每次修改都会将当前时间更新进去,只有调用QuerySet.update方法将不会调用。这个参数只是Date和DateTime以及TimModel.save()方法才会调用。
auto_now_add: 第一次添加进数据库,都会将当前时间设置进去。以后修改,不会修改这个值。
建立一个用户表的部分属性类型如下面代码:
class Customer(models.Model): phone = models.CharField(max_length=32, primary_key=True)token = models.CharField(max_length=128, unique=True)createTime = models.DateTimeField(auto_now_add=True) #设置创建时间用这个,不会再变化lastTime = models.DateTimeField(auto_now=True) #设置最后一次修改时间用这个isDelete = models.BooleanField(default=False)
在模板中使用路由:
模板语法url的参数:
mydate:代表命名为mydate的路由,即index的urls.py里的某条name='mydate'的path
后面跟的三个用空格间隔的字符串依次代表路由地址中的变量:
如果路由地址中有变量,则模板语法中必须要设置相应的参数值,且一一对应。如果路由地址没有变量,则模板语法中的url只需要设置路由名即可。
如果使用了namespace命名空间,则模板语法url在使用路由时,需要在命名路由name前面添加命名空间namespace并且使用冒号隔开:
总结如下: