Django 遵从 MVC 模型,并将其特色化为 MTV 模型。模型的核心是通过用户访问的 url 来指向处理的函数,而函数处理后返回相应的结果。所以url决定了用户访问的入口,另外表单处理的提交地址也需要指定的url。url是所有功能的入口,所以url的编写就变得非常重要。

  Django 的 url 编写涉及了 python 的 re 模块,也就是正则表达式,这部分内容需要提前掌握。

  本篇的内容将结合官方的1.8.2的文档进行说明,如果有说明不清的地方可以相应参照官方的文档,我这里提供一个进行中文翻译后的:戳这里

  在进行编写的说明前,我先介绍一下django是如何处理一个请求的:

  1.用户发来一个请求。Django将用户的请求报文等信息封装成HttpRequest对象,然后经过各种中间件处理后,抵达 url 模块进行处理函数的选择。

  2.Django要决定使用哪个模块用作匹配,这个通常由 settings.py 中的 ROOT_URLCONF 的值决定,例如:ROOT_URLCONF = 'test_web.urls' 。就表示将使用 test_web(项目同名app) 这个 app 下的 urls 这个模块文件( 这个模块也称为url的根模块,可修改 )。但如果进来的HttpRequest对象具有一个 urlconf  属性(通过中间件 request processing  设置),则使用这个值来替换 ROOT_URLCONF  设置。(可能会存在版本差异)

  3.Django 加载该 Python 模块并寻找可用的 urlpatterns 变量。它是一个 Python 列表,里面的元素是 django.conf.urls.url() 的实例。

  4.Django 按照正则匹配的方式,依次匹配每个URL 模式,在第一个与请求的URL 匹配的地方停下来(下面也符合的会被忽视)。

  5.一旦其中的一个正则表达式匹配上,Django 将导入并调用给出的视图,它是一个简单的Python 函数(或者一个基于类的视图)。视图将获得如下参数:

    a)  一个HttpRequest 实例(这也是为什么 view 函数的第一个参数要是 request,该实例封装了所有的 http 请求报文的信息)

    b) 如果正则匹配的 url 中使用了括号分组,但却没有为分组进行命名,则使用位置参数的模式为view函数传参。

    c) 如果是命名的分组,则使用关键字传参的方式。但是可以被django.conf.urls.url()的可选参数kwargs覆盖。

  6.如果没有匹配到正则表达式,或者如果过程中抛出一个异常,Django 将调用一个适当的错误处理视图。

  7.函数处理完毕,返回处理后的结果。


官方手册的例子:

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

分析:

  1.若要从 URL 中捕获一个值,只需要在它周围放置一对圆括号。(即正则中的分组匹配)

  2.不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。(django自动在域名后添加了/,这个默认行为可以进行改写)

  3.每个正则表达式前面的'r' 是可选的但是建议加上。它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义。参见Dive Into Python 中的解释。

一些请求的例子:

  /articles/2005/03/ 请求将匹配列表中的第三个模式。Django 将调用函数views.month_archive(request, '2005', '03')。

/articles/2005/3/ 不匹配任何URL 模式,因为列表中的第三个模式要求月份应该是两个数字。

/articles/2003/ 将匹配列表中的第一个模式不是第二个,因为模式按顺序匹配,第一个会首先测试是否匹配。请像这样自由插入一些特殊的情况来探测匹配的次序。

/articles/2003 不匹配任何一个模式,因为每个模式要求URL 以一个斜线结尾。

   /articles/2003/03/03/ 将匹配最后一个模式。Django 将调用函数views.article_detail(request, '2003', '03', '03')。


命名组

  上面的例子中,虽然实现了参数的传递,但是并没有我们熟知的关键字传参。要使用关键字传参,只有为分组命名就行了。例如:(?P<name>\d+),这个分组表示匹配一个或多个任意的数字,并以 name = 匹配到的数字,如 name = '123' 的方式传给view 函数。

  但是,要注意一点,url 捕获的所以参数都是字符串类型,虽然 \d 在正则中表示匹配数字,但传参的时候,传的是字符串。例如,正则捕获的 123 ,但传参是 '123'。

官方例子

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
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),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]

分析:

  /articles/2005/03/ 请求将调用views.month_archive(request, year='2005', month='03')函数,而不是views.month_archive(request, '2005', '03')。

  /articles/2003/03/03/ 请求将调用函数views.article_detail(request, year='2003', month='03', day='03')。

匹配/分组算法

下面是URLconf 解析器使用的算法,针对正则表达式中的命名组和非命名组:

  1.如果有命名参数,则使用这些命名参数,忽略非命名参数。

  2.否则,它将以位置参数传递所有的非命名参数。

  根据传递额外的选项给视图函数(下文),这两种情况下,多余的关键字参数也将传递给视图。

注意:

  1.一条 url 中,分组不能同名,否则报错。(初步测试)

  2.所谓的有命名分组就使用命名参数,忽略非命名参数是下面这样的:

url(r'add/(\d+)/(?P<num1>\d+)/(?P<num2>\d+)/', add, name='add'),
def add(request, num1, num2):
num1 = int(num1)
num2 = int(num2)
return HttpResponse(num1 + num2)

  在这里,request 是 Httprequest,是 django 自动传递的,我们只要看 num1 和 num2 两个参数就可以的。这里我的处理函数除了 request 之外还需要 2 个参数,但是我在 url 中使用了三个分组,理论上应该会捕获 3 个参数。

  但是,当我访问 http://127.0.0.1:8000/add/666/321/123/  时,我得到的结果是:

  aaarticlea/png;base64,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" alt="" />

  另外,因为捕获的参数是字符串类型, 所以我使用了 int() 函数进行类型转换,如果不这样的话:

def add(request, num1, num2):

    return HttpResponse(num1 + num2)

得到的结果就是:

aaarticlea/png;base64,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" alt="" />

  字符串的拼接,所以说,捕获的参数都是字符串

  好了,回到正题。我的函数需要除了 request 之外的 2 个参数,但是我在 url 中捕获了三个,得到的结果是后面的两个命名组的参数,也就是多出来的被忽略了

  这就是所谓的当命名组存在的时候,非命名组会被忽略。

  但是,我的 url 是这样写的:

 url(r'add/(\d+)/(?P<num2>\d+)/', add, name='add'),

  我希望前面的未命名组按位置传给 num1 而 num2 使用关键字参数。

  现在,我访问: http://127.0.0.1:8000/add/321/123/

aaarticlea/png;base64,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" alt="" />

  报错的信息是,函数需要 3 个参数,而我们给了 2 个,其中,去除自动传递的 request,也就是我们只捕获到了 1 个参数。

  此时,再看看这句活:当命名组存在时,会忽略非命名组

  因为非命名组捕获的参数被忽略了,所以才导致我们少传了一个参数。

  这个时候,你应该知道这里的忽略是什么意思了吧。


URLconf 在什么上查找

  请求的URL被看做是一个普通的Python 字符串, URLconf在其上查找并匹配。进行匹配时将不包括GET或POST请求方式的参数以及域名

  例如,http://www.example.com/myapp/请求中,URLconf 将查找myapp/。

   在http://www.example.com/myapp/?page=3 请求中,URLconf 仍将查找myapp/。

  URLconf 不检查使用了哪种请求方法。换句话讲,所有的请求方法 —— 即,对同一个URL的无论是POST请求、GET请求、或HEAD请求方法等等 —— 都将匹配到相同的函数。

  但是,我们能限制某个函数只能由某种方式访问,但这里不是 url 这里的内容了,以后再讲。


捕获的参数永远是字符串

  关于这句话我在刚才的 num1 和 num2 相加的示例中已经演示过了,这里记住这句话就行了。


指定视图参数的默认值

  这并不是 django 特有的用法,这是 python中 的函数默认参数的内容。但是django这里能处理一些特殊的情况:

from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^blog/$', views.page),
url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]
def page(request, num=""):
......
return .....

  在上面的例子中,两个URL模式指向同一个视图views.page —— 但是第一个模式不会从URL 中捕获任何值。如果第一个模式匹配,page() 函数将使用num参数的默认值"1"。如果第二个模式匹配,page() 将使用正则表达式捕获的 num 值。


性能

  urlpatterns 中的每个正则表达式在第一次访问它们时被编译。这使得系统相当快。


urlpatterns 变量的语法

  urlpatterns 应该是一个 python 列表,列表中存放的都是 url() 的实例。


错误处理

  当Django 找不到一个匹配请求的 URL 的正则表达式时,或者当抛出一个异常时,Django 将调用一个错误处理视图。

   这些情况发生时使用的视图通过4个变量指定。它们的默认值应该满足大部分项目,但是通过赋值给它们以进一步的自定义也是可以的。

  完整的细节请参见自定义错误视图。

  这些值可以在你的根URLconf 中设置。在其它URLconf 中设置这些变量将不会生效果。

  它们的值必须是可调用的或者是表示视图的Python 完整导入路径的字符串,可以方便地调用它们来处理错误情况。

这些值是:

handler404 —— 参见django.conf.urls.handler404。

handler500 —— 参见django.conf.urls.handler500。

handler403 —— 参见django.conf.urls.handler403。

handler400 —— 参见django.conf.urls.handler400。

 

 关于这部分我目前也在研究中,以后研究出结果再分享出来。

django-url调度器-初级篇的更多相关文章

  1. Django URL调度器

    Django处理请求的流程 Django确定要使用的根URLconf模块.通常,这是ROOT_URLCONF设置的值,但如果传入 HttpRequest对象具有urlconf 属性(由中间件设置),则 ...

  2. Django 源码小剖: 更高效的 URL 调度器(URL dispatcher)

    效率问题 django 内部的 url 调度机制说白了就是给一张有关匹配信息的表, 这张表中有着 url -> action 的映射, 当请求到来的时候, 一个一个(遍历)去匹配. 中, 则调用 ...

  3. Django 源码小剖: URL 调度器(URL dispatcher)

    在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 URL. 这是 django url 匹配处理机制的 ...

  4. URL 调度器(URL dispatcher)

    URL 调度器(URL dispatcher) 在刚开始接触 django 的时候, 我们尝试着从各种入门文档中创建一个自己的 django 项目, 需要在 mysite.urls.py 中配置 UR ...

  5. django-url调度器-中级篇

    在初级篇中,我们接触了: 1.url 的简单编写 2.两种传参的方式 3.捕获的参数总是字符串 4.为视图设置默认参数 …… 在中级篇中将更进一步. 包含其它的URLconfs 当网站非常大的时候,将 ...

  6. django url注册器组件, 响应器组件, 分页器组件

    一.url注册器的使用 1.1导入模块 from django.urls import re_path, include from .serializer import views from rest ...

  7. django-url调度器-高级篇

    我们在中级篇中学会了如何进行反向解析,但是有这样一个问题,在为 url 命名的时候,名字不能重复,否则会导致各种各样的问题.在 url 还少的时候保证不重名还是比较简单的,但是 url 多起来以后就比 ...

  8. Django url分发器

    视图: 视图一般都写在app的views.py中.并且视图的第一个参数永远都是request(一个HttpRequest)对象.这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等.在视 ...

  9. django url调度

    Django的url配置相同遵循着DRY(dont repeat yourself)的规则.下面都是官方文档的样例: 首先介绍的是Django怎样处理http的请求: 1.在setting里定义ROO ...

随机推荐

  1. 关于WinCE流接口驱动支持10以上的端口号(COM10)

    一般情况下,WinCE流驱动的索引为0~9.应用程序中,通过CreateFile(_T("XXXN:"),…)打开对应的驱动,N也为0~9.这样看来,似乎在WinCE下同名流驱动个 ...

  2. EL表达式结合页面JSTL使用 迭代显示表格

    1.迭代显示表格 <%@ page isELIgnored="false"%><%@ taglib uri="/WEB-INF/struts-bean. ...

  3. Hive静态分区表&动态分区表

    静态分区表: 一级分区表: CREATE TABLE order_created_partition ( orderNumber STRING , event_time STRING ) PARTIT ...

  4. JAVA·多线程:创建线程的两种方式

    1.–扩展java.lang.Thread类 package multiThread; public class Thread02extThread { public static void main ...

  5. mysq 因断电而导致的错误

    问题来源: 昨天断电,而我没有保存,导致出现以下问题: 2015-10-12 10:48:10 7300 [Note] Plugin 'FEDERATED' is disabled. 2015-10- ...

  6. CCF真题Z型输出

    #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> ...

  7. nginx如何限速?

    nginx自从1.1.8版本发布后将limit_conn更换为limit_conn_zone . 对应则需要修改配置文件 在nginx.conf的http下面加入下面代码limit_conn_zone ...

  8. MCADEx Tools 6.3下载地址

    MCADEx Tools 6.3下载地址: http://pan.baidu.com/s/1pLxQPkR 修改参数批量设置工具为模型批量检查工具; 修改模型批量检查过滤工具; 修改工程图管理过滤工具 ...

  9. hql 关联查询

    HQL 带的连接语句只能是实体与 该实体的属性 进行连接 其意义就是为了优化(通过延迟加载查询关联的属性)需要进行配置 from A left join A.B where (b.flag is nu ...

  10. 开源项目:网页实时通信WebRTC

    参考资料 [博客系列] Android WebRTC 音视频开发总结 [环境编译] WebRTC入门指南 各平台WebRTC源码网盘下载 Ubuntu14.04编译WebRTC For Android ...