mysqlclient
项目同名文件夹下__init__.py这个文件中添加以下两句话:(数据库8.0时,进行数据库迁移时报错为2026的解决方法)
import pymysql
pymysql.install_as_MySQLdb()
路由层
path(路由, 视图函数, 别名)
关于url后面加/的问题:有时候你没有加/,django也会自动帮你加上/去匹配
取消自动加/
在settings.py中加上
APPEND_SLASH = False # 默认是自动加斜杆的
re_path(reg, view, name)
reg:正则表示式
正则表达式命名分组模式(?Ppattern)
,匹配提取参数后用关键字传参方式传递给视图函数
正则表达式是一个特殊的字符序列,能够帮助你检查一个字符串是否与某种模式匹配
:匹配字符串的开头’1’
$:匹配字符串的末尾
[…]:用来表达一组字符
re模块是python提供正则表达式功能的
re.match(匹配的正则, 字符串,)
span():查询匹配到的字符串的索引
re.match(‘www’, ‘www.baidu.com’).span()
re.search(匹配的正则, 字符串)
match和search的区别:match只会匹配字符串的开始,如果开始不符合则匹配失败.search匹配整个字符串
compile():用于编译正则表达式的,生成一个正则表达式,供match和search函数使用
无名分组
re_path(‘test/(\d+)/’, views.test),
正则匹配会将括号内匹配的内容当做位置参数传递给后面的视图函数
有名分组
re_path(‘(?P\d+)/’, views.test),
有名分组就是将括号内正则表示式匹配到的内容当做关键字参数传递给后面的视图函数
注意:无名分组和有名分组不能混用
反向解析
反向解析的本质:通过一些方法可以得到一个结果,该结果可以直接访问对应的url触发的视图函数
1.首先给路由起个别名
2.前端反向解析
3.后端反向解析
需要导入reverse方法
无名分组有名分组反向解析
前端
后端
路由分发
快捷运行manage.py
可以直接输入startapp 应用名去创建应用
可以通过include方法进行路径分发,利用路由分发之后,总路由就不再干路由和视图的直接对应关系了,而是做分发处理,识别当前的url是属于哪个应用的,直接交给那个应用去处理
也可以不用导入模块,直接使用