博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
路由系统
阅读量:4935 次
发布时间:2019-06-11

本文共 2493 字,大约阅读时间需要 8 分钟。

 

 

Django处理请求的流程

  1. 进来的请求转入/hello/.
  2. Django通过在ROOT_URLCONF配置来决定根URLconf.
  3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
  4. 如果找到匹配,将调用相应的视图函数
  5. 视图函数返回一个HttpResponse
  6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
 
 
 

URL匹配规则

  • 一旦匹配成功则不再继续
  • 若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。
  • 不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。
  • 每个正则表达式前面的'r' 是可选的但是建议加上。
 
如:
url(r'^hello/$', views.hello)
  • 如果尾部不是$的模式’^hello/’,那么任何以/hello/开头的URL将会匹配,例如:/hello/fo和/hello/bar
  • 如果忽略了尖号 "^",即’hello/$’,那么任何以hello/结尾的URL将会匹配,例如:/foo/bar/hello/。
  • 如果没有^开头和$结尾,那么任何包含hello/的URL将会匹配,如:/foo/hello/bar。
  • 因此,我们使用这两个符号以确保只有/hello/匹配,不多也不少。

 

URL的常用的几种形式

 

# 位置参数,  正则带括号,视图必须带参数   year_archive(request, 2009)url(r'^eee/([0-9]{4})/$', views.year_archive), # 命名组 关键参数(GET)   year_archive(request, year=2009)url(r'^articles/(?P
[0-9]{4})/$', views.year_archive), # 命名组 关键参数 (POST) page(request, num=12)url(r'^blog/page(?P
[0-9]+)/$', views.page), # 可选的第三个参数 page(request, num=12, foo=None)url(r'^blog/page(?P
[0-9]+)/$', views.page, {
'foo': 'bar'},name='PAGE

 

字符串URL

from django.conf.urls import patterns, url, include urlpatterns = [                 url(r'^time/', 'mysite.views.time'),]

 

URL分组

from django.conf.urls import patterns, url, include#loginurlpatterns = patterns('sblog.views',    url(r'^login/$','login'),    )#logouturlpatterns += patterns('sblog.views',    url(r'^logout/$','logout'),    )

 

别名

 

urlpatterns = [url(r'^$', 'news.views.index', name='index'),url(r'^aaa/(?P
[^/]+)/$', 'news.views.aa',name='AA'),url(r'^bbb/(?P
[^/]+)/$', 'news.views.bbb',name='BBB'),] #在模板中使用 不带参数: {% url "index" %} 带参数: {
% url "AA" www %} --- > /aaa/www# 在views或者models中使用>>> from django.core.urlresolvers import reverse # django 1.4-1.10>>> from django.urls import reverse # django 1.10新加的,更加规范>>> reverse('BBB',args=('wwww',))'/bbb/wwww/>>> reverse('AA',args=('wwww',))'/aaa/wwww/'

 

 

名称空间

# mysite/urls.pyurl(r'^a/', include('blog.urls', namespace='author-polls',app_name='aaa')),# blog/url.pyurl(r'^(?P
\d+)/(?P
\d+)$', views.post_detail, name='detail'),在模板中使用: {
% url 'author-polls:detail' pk=12 pp=99 %}{
% url 'aaa:detail' pk=12 pp=99 %}在views和models中使用In [3]: reverse('author-polls:detail', kwargs={
'pk':1133,'pw':555})Out[3]: '/a/1133/555'In [4]: reverse('aaa:detail', kwargs={
'pk':1133,'pw':555})Out[4]: '/a/1133/555'

转载于:https://www.cnblogs.com/hanqian/p/7029311.html

你可能感兴趣的文章
SQL CHECK 约束&Case when 的使用方法
查看>>
[整理]HTTPS和SSL证书
查看>>
[转载] Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
查看>>
水晶苍蝇拍:聊聊估值那些事儿——“指标”背后的故事 (2011-11-01 14:58:32)
查看>>
3.每周总结
查看>>
应用提交 App Store 上架被拒绝
查看>>
Android实现异步处理 -- HTTP请求
查看>>
数据清空js清空div里的数据问题
查看>>
Fortran中的指针使用
查看>>
移动终端app测试点总结
查看>>
14-6-27&28自学内容小结
查看>>
JSP
查看>>
---
查看>>
(第一组_GNS3)自反ACl
查看>>
hdu--1258--Sum It Up(Map水过)
查看>>
Spring @DeclareParents 的扩展应用实例
查看>>
VS2012更新Update1后帮助查看器无法打开
查看>>
【Weiss】【第03章】练习3.9:大整数运算包
查看>>
Android 文件的读取和写入
查看>>
机器学习-加权采样算法简介
查看>>