[urls.py设置技巧]Django是如何处理URLconf的?
2015-11-02 23:17
651 查看
注:以下内容转载自 现代魔法学院 网站的 Django是如何处理URLconf的? 一文,仅供学习使用。
urls.py 的规则
URL 配置(URLconf)就像是 Django 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。例如,当用户访问 /foo/ 时,调用视图函数 foo_view(),这个视图函数存在于 Python 模块文件 view.py 中。
执行 django-admin.py startproject 时,该脚本会自动为你建了一份 URLconf(即 urls.py 文件)。在同时自动创建的 settings.py 文件中,创建一个变量 ROOT_URLCONF,其变量的值就是根 URLconf 的模块名。默认值是 urls.py 文件的模块名。
例如:我的 Django 项目的根目录名为“pearl”,ROOT_URLCONF 的默认值为“pearl.urls”。我们知道,urls.py 是用来配置 URL 的,那么它是如何工作的呢?
我们先来看看这个规则的原型:
即:
“前缀”会在视图函数里面会自动加上指引。view = prefix + '.' + view,最后调用 RegexURLPattern(regex, view, kwargs, name)。
那么 RegexURLPattern() 又是长什么样子呢?先看看,暂不作深入讨论。
URL的规则,Django 会如何处理?
要弄清 Django 如何处理 URL 配置规则,先要了解几个概念。
URL 模式:URL 模式是指在 Django urls 模块中,名为 urlpatterns 的元组中包含的每一个值。通常由 patterns 方法生成 urlpatterns 元组的内容。
URL 分解器:通常,一个 URL 分解器对应一个 URL 配置模块,它可以包含多个 URL 模式,也可以包含多个其他 URL 分解器。通过这种包含结构设计,实现 Django 对 URL 的层级解析。URL 分解器是 Django 实现 app 与项目解耦的关键。通常由 include 方法操作的 URL 配置模块,最终会被解释成为 URL 分解器。
匹配结果:匹配结果是指当 URL 被正确匹配时,需返回的匹配结果。
由于每个处理方式都需要一定篇幅介绍,故这里只作概念介绍,具体的介绍放在后面的小节里。
urls.py 的规则
URL 配置(URLconf)就像是 Django 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。例如,当用户访问 /foo/ 时,调用视图函数 foo_view(),这个视图函数存在于 Python 模块文件 view.py 中。
执行 django-admin.py startproject 时,该脚本会自动为你建了一份 URLconf(即 urls.py 文件)。在同时自动创建的 settings.py 文件中,创建一个变量 ROOT_URLCONF,其变量的值就是根 URLconf 的模块名。默认值是 urls.py 文件的模块名。
例如:我的 Django 项目的根目录名为“pearl”,ROOT_URLCONF 的默认值为“pearl.urls”。我们知道,urls.py 是用来配置 URL 的,那么它是如何工作的呢?
我们先来看看这个规则的原型:
from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^login/$', openid_login, {}, 'openid-login'), )
即:
from django.conf.urls.defaults import * urlpatterns = patterns(前缀, (表达式, 视图函数, <span style="font-family:Microsoft YaHei;">默认参数</span>, 名称), )
“前缀”会在视图函数里面会自动加上指引。view = prefix + '.' + view,最后调用 RegexURLPattern(regex, view, kwargs, name)。
那么 RegexURLPattern() 又是长什么样子呢?先看看,暂不作深入讨论。
class RegexURLPattern(object): def __init__(self, regex, callback, default_args=None, name=None): self.regex = re.compile(regex, re.UNICODE) if callable(callback): self._callback = callback
URL的规则,Django 会如何处理?
要弄清 Django 如何处理 URL 配置规则,先要了解几个概念。
URL 模式:URL 模式是指在 Django urls 模块中,名为 urlpatterns 的元组中包含的每一个值。通常由 patterns 方法生成 urlpatterns 元组的内容。
URL 分解器:通常,一个 URL 分解器对应一个 URL 配置模块,它可以包含多个 URL 模式,也可以包含多个其他 URL 分解器。通过这种包含结构设计,实现 Django 对 URL 的层级解析。URL 分解器是 Django 实现 app 与项目解耦的关键。通常由 include 方法操作的 URL 配置模块,最终会被解释成为 URL 分解器。
匹配结果:匹配结果是指当 URL 被正确匹配时,需返回的匹配结果。
由于每个处理方式都需要一定篇幅介绍,故这里只作概念介绍,具体的介绍放在后面的小节里。
相关文章推荐
- [urls.py设置技巧]Django urls.py的了解与基本配置
- LightOJ - 1152 Hiding Gold(二分图匹配)
- django rest framework 入门
- LightOJ 1030 - Discovering Gold (期望dp)
- django rest framework
- Go语言可变参数函数,何时该使用省略号(...)
- 2015年6月美国San Diego之旅
- Go语言项目(kingshard)性能优化实例剖析
- goto语句语法
- Google基于Dart的新移动开发框架Flutter介绍
- 初步解读Golang中的接口相关编写方法
- mangos(二)认证登录基本流程
- Good Bye 2014 B. New Year Permutation(贪心+Floyd)
- Good Bye 2014 A. New Year Transportation(水~)
- 深入解析Go语言编程中的递归使用
- 一个屁股引发的Google搜索技术讨论及解决
- 总结一下这几天学习django的心得
- ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<
- 传GooglePlay将入华:重回中国或是一件好事
- 传GooglePlay将入华:重回中国或是一件好事