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是某些匹配的模式。

Django学习之URLconf的更多相关文章

  1. Django学习之十: staticfile 静态文件

    目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述     ...

  2. Django学习笔记(11)——开发图书管理页面

    一,项目题目: 开发图书管理页面 该项目主要练习Django对多个数据库进行增删改查的操作. 二,项目需求: 基础需求:75% 1. 列出图书列表.出版社列表.作者列表 2. 点击作者,会列出其出版的 ...

  3. Django 学习笔记1-- URLconf

    今天好像巴黎有点乱,希望明天太阳还会照常升起. 简介 Django 是一个由 Python 编写.开源并采用经典的 MVC 设计模式的 Web Full Stack 应用框架. 在 Django 中, ...

  4. 今天主要推荐一下django学习的网址!

    前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...

  5. Django 学习笔记之四 QuerySet常用方法

    QuerySet是一个可遍历结构,它本质上是一个给定的模型的对象列表,是有序的. 1.建立模型: 2.数据文件(test.txt) 3.文件数据入库(默认的sqlite3) 入库之前执行 数据库同步命 ...

  6. Django 学习笔记之三 数据库输入数据

    假设建立了django_blog项目,建立blog的app ,在models.py里面增加了Blog类,同步数据库,并且建立了对应的表.具体的参照Django 学习笔记之二的相关命令. 那么这篇主要介 ...

  7. Django学习系列之Form基础

     Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...

  8. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  9. Django学习笔记(精简版)

    dos:安装:python setup.py install 环境变量:D:\Python27;D:\Python27\Lib\site-packages\django\bin; 转到创建的目录:dj ...

随机推荐

  1. 【暴力】洛谷 P2038 NOIP2014提高组 day2 T1 无线网络发射器选址

    暴力枚举. #include<cstdio> #include<algorithm> using namespace std; ][],d,n,x,y,z,num,ans=-; ...

  2. Java高级架构师(一)第17节:X-gen生成所需的DAO部分模板

  3. Idea下Android的配置

    (1) 下载安装好Intellij Idea和Android SDK. (2) Android SDK设置 ,在FIle –> Other Settings –> Default Proj ...

  4. Centos7.4 建站系统和软件版本搭配

    一.系统和软件版本搭配 版本: 1.1.2 类型: 建站系统 适用于: Centos7.4 64bit 集成软件版本: nginx_versi=1.12.2 PHP=7.1.13 (已提供提供Zend ...

  5. Java NIO 选择器(Selector)的内部实现(poll epoll)(转)

    转自:http://blog.csdn.net/hsuxu/article/details/9876983 之前强调这么多关于linux内核的poll及epoll,无非是想让大家先有个认识: Java ...

  6. webmagic 下载页面

    下面是webmagic官方的默认实现HttpClientDownloader中的下载方法. @Override public Page download(Request request, Task t ...

  7. 2017.11.15 hashmap的工作原理

    参考来自:http://blog.csdn.net/jeffleo/article/details/54946424 一 hashMap的基本概念 1.HashMap的定义 public class ...

  8. Eclipse user library位置

    原因: 转自:http://happycoolyp.iteye.com/blog/1853135 user libraries的记录文件%eclipse_workspace%\.metadata\.p ...

  9. Ajax库的编写及使用

    ajax使用在服务器端. ajax.js function ajax(url,fnSucc,fnFail) { //1.创建ajax对象 var oAjax = null; if(window.XML ...

  10. Django——基于类的视图源码分析 二

    源码分析 抽象类和常用视图(base.py) 这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图 ...