Django处理request的步骤:

1.确定根URLconf

2.载入urls.py,找到变量urlpatterns,urlpatterns是django.conf.urls.url()的实例对象(列表)

url(regex, view, kwargs=None, name=None)[source]
regex是一个字符串或者 ugettext_lazy(),字符串包含正则表达式,兼容re模块,字符串通常使用原始字符串语法(r“),以便它们可以包含像\ d这样的序列,而不需要使用另一个反斜杠来转义反斜杠。 view参数是一个视图函数,或者基于类的视图的as_view()的结果,亦或者是一个include()。 kwargs允许像视图函数或者方法传递额外的参数,参见 Passing extra options to view functions查看实例。 name参数的意义查看 Naming URL patterns
Naming URL patterns
为了执行URL反转,您需要使用命名URL模式,如上例所示。 用于URL名称的字符串可以包含您喜欢的任何字符。 当您命名URL模式时,请确保使用不太可能与任何其他应用程序选择的名称冲突的名称。 如果您调用了URL模式注释,而另一个应用程序也执行相同的操作,那么在使用此名称时,不能保证在您的模板中插入哪个URL。 在您的网址名称上放置一个前缀,也许是从应用程序名称派生出来的,可以减少碰撞的几率。 我们建议像myapp-comment而不是comment。
Passing extra options to view functions

URLconfs有一个钩子,可以让您传递额外的参数到您的视图函数,作为Python字典。

django.conf.urls.url()函数可以使用一个可选的第三个参数,它应该是一个额外的关键字参数的字典,以传递给view函数。

例如:
from django.conf.urls import url
from . import views urlpatterns = [
url(r'^blog/(?P<year>[0-9]{4})/$', views.year_archive, {'foo': 'bar'}),
]
在联合框架中使用此技术将元数据和选项传递给视图。

在这个例子中,对于/ blog / 2005 /的请求,Django将调用views.year archive(request,year ='2005',foo ='bar')。

处理冲突:

可以使用一个URL模式来捕获命名关键字参数,并在其额外参数的字典中传递具有相同名称的参数。 当这种情况发生时,字典中的参数将被使用,而不是在URL中捕获的参数。

3.Django按顺序执行每一个URL模式,当第一个request的URL匹配即停止向下执行

4.一旦正则表达式匹配成功,Django导入并执行视图函数(或者基于类的视图函数),以下参数可传递到视图函数:

HttpRequest实例对象

如果匹配的正则表达式没有返回任何命名组,那么来自正则表达式的匹配将作为位置参数提供。

关键字参数由正则表达式匹配的任何命名组组成,由在django.conf.urls.url()的可选kwargs参数中指定的任何参数覆盖。

5.如果没有正则表达式匹配,或者在此过程中的任何一点出现异常,Django将调用适当的错误处理视图。 参见下面的错误处理。

命名组

上述示例使用简单的,未命名的正则表达式组(通过括号)捕获URL的位,并将它们作为位置参数传递给视图。 在更高级的使用中,可以使用命名的正则表达式组来捕获URL位,并将它们作为关键字参数传递给视图。

在Python正则表达式中,命名的正则表达式组的语法是(?P <name> pattern),其中name是组的名称,而pattern是某些匹配的模式。

最新文章

  1. CSS中LI圆点样式li {list-style-type:符号名称}
  2. YYCache设计思路及源码学习
  3. 转载《Android Adapter简单总结》
  4. Python爬虫入门
  5. PoEdu- C++阶段班【Po学校】-Lesson03_构造函数精讲 - 第5天
  6. ZOJ 3811 Untrusted Patrol
  7. Three Sources of a Solid Object-Oriented Design
  8. LIS-Program E
  9. leetcode 108 Convert Sorted Array to Binary Search Tree ----- java
  10. UVA 1658 Admiral 海上将军(最小费用流,拆点)
  11. redirect_uri参数错误解决方法
  12. 最简单的基于FFMPEG的封装格式转换器(无编解码)
  13. JAVA 相关资料
  14. MySQL计数器表的设计
  15. Redis数据类型及命令
  16. 【Python】多进程-4
  17. Qsys 设计流程---Qsys System Design Tutorial
  18. 网络对抗技术 2017-2018-2 20152515 Exp3 免杀原理与实践
  19. Python2图像文本识别
  20. day7 面向对象进阶

热门文章

  1. 五角数 Exercise06_01
  2. 利用位操作进行IP地址的转化
  3. Network Connection Lost When Windows 8 Goes To Sleep
  4. svn的安装(整合apache、ldap)包括错误解决post commit FS processing had error
  5. Widows 注册表 HKEY_CLASSES_ROOT
  6. coffeescript 1.6.3使用帮助
  7. chromatic aberration
  8. webpack配置:less/sass文件打包和分离、自动处理css前缀、消除未使用的css及完整的webpack.config.js文件
  9. webpack配置:css文件打包、JS压缩打包和HTML文件发布
  10. Private strand flush not complete错误