django notes 二:URL dispatcher
一般在 settings.py 中会有一个 ROOT_URLCONF ,请求到来时 django 会从 ROOT_URLCONF 指向的文件中查找 urlpatterns 变量配置的路由。
urlpatterns 中还可以 include 其它 model 中的 urlpatterns, django 会从上到下一个一个查找,看 url 是否匹配。 匹配后就交给对应的 view 处理了。
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^index/$', view_index),
url(r'^blog/', include(blog_urls)),
]
url 中的非命名捕获组在 view 中以位置参数接收, 其实接收的是元组,你用 *args 接收是一样的, 元组会自动解包到对应的位置
urlpatterns = [
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
]
def month_archive(request, year, month):
pass
命名捕获组以关键字参数接收, 其实接收的是一个字典,字典会自动解包到对应的字段中,你用 **kw 接收然后自己解也是一样的
urlpatterns = [
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
]
def month_archive(request, year, month):
pass
所有的参数都以字符串来接收,不论你正则中的类型是什么 (Captured arguments are always strings)
这个地方在开发中遇到好几回坑,后台rpc接口接收的是整形,而我传的是字符串,导致排序不正确,还以为是rpc接口有问题,水平太菜。
重写默认的 404 500 界面, 只要在 ROOT_URLCONF 中给 django.conf.urls.handler404 赋值一个自定义 view 就行了
django.conf.urls.handler404 = view_404
django.conf.urls.handler500 = view_500
Reverse url , 要 reverse 得先给 url 起个名字
非命名参数 reverse
urlpatterns = [
url(r'^articles/([0-9]{4})/$', view_articles, name='article')
] print(reverse('article', args=(2015,)))
命名参数 reverse
def view_articles(request, year):
return HttpResponse(content='hello world') urlpatterns = [
url(r'^articles/(?P<year>[0-9]{4})/$', view_articles, name='article')
] print(reverse('article', kwargs={'year': 2018}))
django notes 二:URL dispatcher的更多相关文章
- python django基础二URL路由系统
URL配置 基本格式 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数 ...
- Django 源码小剖: URL 调度器(URL dispatcher)
在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 URL. 这是 django url 匹配处理机制的 ...
- Django基础二之URL路由系统
一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这 ...
- 02.Django基础二之URL路由系统
一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这 ...
- day 66 Django基础二之URL路由系统
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...
- day 53 Django基础二之URL路由系统
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...
- Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)
效率问题 django 内部的 url 调度机制说白了就是给一张有关匹配信息的表, 这张表中有着 url -> action 的映射, 当请求到来的时候, 一个一个(遍历)去匹配. 中, 则调用 ...
- URL 调度器(URL dispatcher)
URL 调度器(URL dispatcher) 在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 UR ...
- day73 Django框架之URL
Django框架之url路由层一 Django数据库的一对多与多对多表的建立 一对多 publish_id的建立:publish=models.ForeignKey(to='Publish', to ...
随机推荐
- 深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式
内存中对象的创建.对象的结构以及访问方式. 一.对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载.虚拟机遇到一条new指令的 ...
- 【小梅哥SOPC学习笔记】设置Eclipse在编译(build)前自动保存源代码文件
设置Eclipse在编译(build)前自动保存源代码文件 Eclipse 常用设置之让Eclipse在编译(build)前自动保存源代码文件 一.让Eclipse在编译(build)前自动保存源代码 ...
- python文件操作os模块
Python 统计某一文件夹下文件数量 使用python pathlib模块 from pathlib import Path dir_path = ' ' print(len(list(Path( ...
- 【C#】事件
前言:CLR事件模式建立在委托的基础上,委托说调用回调方法的一种类型安全的方式. 我个人觉得事件本质就是委托,所以把委托弄清楚,只要知道事件基本语法就会使用了(如果说到线程安全,我个人觉得这个应该和线 ...
- duilib入门简明教程 -- XML配置界面(6)
前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言, ...
- Wait--常见的等待类型
--==================================================================================--SLEEP_BPOOL_FL ...
- Backup--压缩备份和TDE
1>对启用TDE的数据库,压缩备份的备份文件大小与未压缩备份的备份文件大小差不多(压缩比为 1 ) 2>对启用TDE的数据库,压缩备份的备份时间远高于未压缩备份 2>对启用TDE的数 ...
- HTML5QQ登录cav demo
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="tex ...
- OCP 052最新题库还有答案收集整理-第26题
26.In which state can you back up a database in ARCHIVELOGMODE using RMAN? A. NOMOUNT, MOUNT, AND OP ...
- UIEvent笔记
UIEvent是什么 代表iOS系统中的一个事件. UIEvent分为三类,touch events, motion events, and remote-control events touch e ...