Django 之路由篇
Django 系统
环境
python3.6
django1.8
参考资料
django 架站的 16 堂课
环境搭建
anaconda+pycharm
anaconda 使用
conda list:显示当前环境安装的包
conda env list: 显示的安装的虚拟环境列表
conda create -n env_name python=3.6
激活 conda 的虚拟环境
(Linux)source activate env_name
(win) activate env_name
pip install django==1.8
创建第一个 django 程序
命令行启动
pycharm 启动
需要配置
manage.py 文件
路由系统-urls
创建 app
app:负责一个具体业务或者一类具体业务的模块
python manage.py startapp teacher
路由
按照具体的请求 url,导入到相应的业务处理模块的一个功能模块
django 的信息控制中枢
本质上是接收的 URL 和相应的处理模块的一个映射
在接收 URL 请求的匹配上使用了 RE
URL 的具体格式如 urls.py 中所示
需要关注两点
接受的 URL 是什么,即如何使用 RE 对传入 URL 进行匹配
已知 URL 匹配到哪个处理模块
url 匹配规则
从上往下一个一个对比
url 格式是分级格式,则按照级别一级一级往下对比,主要对应 url 包含子 url 的情况
子 url 一旦被调用,则不会返回到主 url
'/one/two/three'
正则以 r 开头,表示不需要转义,注意尖号(^)和美元符号($)
'one/two/three' 配对 r'^one/'
'/oo/one/two/three' 不配对 r'^one/'
'one/two/three' 配对 r'three/$'
'oo/one/two/three/oo' 不配对 r'three/$'
开头不需要有反斜杠
如果从上到下都没有找到合适的匹配内容,则报错
正常映射
把某一个符合 RE 的 URL 映射到事务处理函数中去
举例如下:
URL 中带参数映射
在事件处理代码中需要由 URL 传入参数,形如 /myurl/param 中的 param
参数都是字符串形式,如果需要整数等形式需要自行转换
通常的形式如下:
URL 在 app 中处理
如果所有应用 URL 都集中在 MyDjango/urls.py 中,可能导致文件臃肿
可以把 urls 具体功能逐渐分散到每个 app 中
从 django.conf.urls 导入 include
注意此时 RE 部分的写法
添加 include 导入
使用方法
确保 include 被导入
写主路由开头的 url
写子路由
编写 views 视图
同样可以使用参数
URL 中的嵌套参数
捕获某个参数的一部分
例如 URL /index/page-3, 需要捕获数字 3 作为参数
上述例子会得到两个参数,但 ?: 表示忽略此参数
传递额外参数
参数不仅仅来自于 URL,还可能是我们自己定义的内容
附加参数同样适用于 include 语句,此时对 include 内所有都添加
URL 的反向解析
防止硬编码
本质上是对每一个 URL 进行命名
以后再编码代码中使用 URL 的值,原则上都应该使用反向解析
源代码
urls.py
teacher_url.py
views.py
版权声明: 本文为 InfoQ 作者【若尘】的原创文章。
原文链接:【http://xie.infoq.cn/article/14ac38b6a79ef7ff68b01ce68】。文章转载请联系作者。
评论