Django url() 函数详解
url()函数看起来的格式象: url(r^/account/$’, views.index, name=index) ,它可以接收四个参数,分别是两个必选参数: regex 、 view 和两个可选参数: kwargs 、 name ,接下来详细介绍这四个参数。
regex
regex代表一个正则表达式,凡是与regex匹配的URL请求都会执行到url()函数中对应的第二个参数 view 代表的视图函数中。需要注意的是:正则表达式不会匹配URL中的域名和查询参数,如:http://www.foofish.net/article/?page=3, Django只找 article/ 。正则表达式在URLconf模块加载时就编译好了,所以在匹配的时候速度是很快的。
view
Django匹配正则表达式成功后,就会找到相应的视图函数,Django始终用HttpRequest对象作为第一个参数传递给视图函数,此外使用regex参数中携带的参数作为可选参数传递给视图函数。如: url(r’^(?P\d+)/′,views.detail,name=′detail′),,括号对(?P<articleid>\d+)里面的参数将作为第二个参数传递给视图函数detail(request,articleid),这里参数的名字必须一模一样。因为你在url函数中显示的指定了该参数的名字,当然你也可以不显示的指定,如:url(r′(\d+)/', views.detail, name='detail') ,,括号对 (?P
name
讲name之前,先说说Django template的内建标签url, {% url path.to.some_view%} 可以返回视图函数对应的URL(相对域名的绝对路径),比如 url(r^/account/$’, views.index, name=index) ,使用 {% url view.index %} 将返回 /accout/ ,这样做可以提高模版的灵活性,如果是使用硬编码的方式,模版难以维护。
使用标签url的时候可能会遇到一个问题就是:对于:
urlpatterns = patterns('',
url(r'^archive/(\d{4})/$', archive, name="full-archive"),
url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"),
)
同一个视图函数有多个urlconf,此时模版系统想通过视图名 archive 获取URL时,就不知所措了,name参数就是用来解决此问题的。name用来唯一区一个视图对应多个urlconf的场景。通过name来反向获取URL。
如:
urlpatterns = patterns('',
url(r'^archive/(\d{4})/$', archive, name="full-archive"),
url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"),
)
在模版中可以使用:
{% url arch-summary 1945 %}
{% url full-archive 2007 %}
kwargs
kwargs就是一个字典类型的参数,它的使用方式如:
url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"),
这里的kwargs 就是 {‘summary’: True}
视图函数中就是这样使用:
def archive(request, archive_id, summary):
注意:
如果在url.py 中有 url(r'^comment/(\d{1,9})/delete/$','delete_comment'),
的配置,如果不存在 delete_comment 这样一个函数视图,如果在模版中使用了 {% url path.to.some_view %} 这个标签,那么抛出 ViewDoesNotExit错误。仔细想想很有道理,如果视图不存在,即使匹配到了URL,当访问这个URL的时候,还是会抛ViewDoesNotExit的异常,这里Django只是在加载解析URLConf的时候就做了检查。
如果在根url.py文件中使用了 url(r’^people/’, include(‘people.urls’, namespace=’people’)) ,这里people是一个app,那么在people这个app中的url.py中 url(r’^(\d{1,9})/$’,’index’, name=’index’) 必须指定了name=index才能正常使用{% url ‘people:index’%},否则:
NoReverseMatch at /
Reverse for ‘subjects’ with arguments ‘()’ and keyword arguments ‘{}’ not found
当然如果你确定不是上述问题抛出的此异常,那么可以看下这两个答案:
http://stackoverflow.com/questions/9649587/reverse-for-with-arguments-and-keyword-arguments-not-found
http://stackoverflow.com/questions/14882491/django-release-1-5-url-requires-a-non-empty-first-argument-the-syntax-change
本文参考
https://docs.djangoproject.com/en/1.1/topics/http/urls/#id2
https://docs.djangoproject.com/en/1.1/ref/templates/builtins/#std:templatetag-url
Django1.8返回json字符串和接收post的json字符串内容 http://www.linuxidc.com/Linux/2015-07/120226.htm
如何使用 Docker 组件开发 Django 项目? http://www.codesec.net/Linux/2015-07/119961.htm
Ubuntu Server 12.04 安装Nginx+uWSGI+Django环境 http://www.codesec.net/Linux/2012-05/60639.htm
Django+Nginx+uWSGI 部署 http://www.codesec.net/Linux/2013-02/79862.htm
Django实战教程 http://www.codesec.net/Linux/2013-09/90277.htm
Django python mysql Linux 开发环境搭建 http://www.codesec.net/Linux/2013-09/90638.htm
Django 的详细介绍 :请点这里
Django 的下载地址 :请点这里
本文地址 : http://www.codesec.net/Linux/2015-08/121376.htm
本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程
Django url() 函数详解相关推荐
- php 新浪url,PHP URL函数详解
php url函数: parse_url() parse_url (PHP 3, PHP 4, PHP 5) parse_url -- 解析 URL,归来其构成局部 解释 array parse_ur ...
- 【FFmpeg】函数详解(二)
FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...
- python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小.>>> abs(-25) 25>> ...
- timm 视觉库中的 create_model 函数详解
timm 视觉库中的 create_model 函数详解 最近一年 Vision Transformer 及其相关改进的工作层出不穷,在他们开源的代码中,大部分都用到了这样一个库:timm.各位炼丹师 ...
- gzdeflate函数_PHP中的gzcompress、gzdeflate、gzencode函数详解
这篇文章主要介绍了PHP中的gzcompress.gzdeflate.gzencode函数详解,本文深入分析了它们的相同点和不同点,需要的朋友可以参考下 PHP中存在一组看起来很像的压缩解压函数: 压 ...
- 脚本——web_custom_request函数详解
web_custom_request函数详解 在LR中当使用HTML录制方式时,录制的脚本中主要由函数web_link().web_submit_form().web_url().web_submit ...
- python中append函数解析_对python中的pop函数和append函数详解
对python中的pop函数和append函数详解 pop()函数 1.描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法 pop()方法语法: list. ...
- ajaxsetup获取ajax的url_jQuery.ajaxSetup() 函数详解
该函数用于更改jQuery中AJAX请求的默认设置选项.之后执行的所有AJAX请求,如果对应的选项参数没有设置, 将使用更改后的默认设置. //设置AJAX的全局默认选项 $.ajaxSetup( { ...
- Linux系统调用-- recv/recvfrom/recvmsg函数详解(转)
Linux系统调用-- recv/recvfrom/recvmsg函数详解 2007-09-10 23:37 [recv/recvfrom/recvmsg系统调用] 功能描述: 从套接字上接收一个 ...
- C语言网络编程:accept函数详解
文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...
最新文章
- 平稳随机序列的自相关函数和功率谱密度
- Video Question Answering综述
- Java高并发系统的限流策略
- 【渝粤题库】陕西师范大学164202 市场营销学 作业(专升本)
- 年轻人不要上来就说我要创业
- windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
- 论文赏析[ACL18]直接到树:基于神经句法距离的成分句法分析
- 项目如何开始:怎样和客户谈需求(转)
- Kafka分区分配策略(Partition Assignment Strategy
- Monitor线程同步
- php旧物交易开源代码_php二手市场交易系统毕业设计(含源文件)
- iphone捷径大全_iPhone捷径,助您一臂之力
- 软件开发几个阶段的内容以及产物
- 随身WIFI安装Debian流程记录
- Excel基础-数据方向
- Python面试题大全总结
- Threejs系列--14游戏开发--沙漠赛车游戏【纹理贴图之loading加载】
- 3D游戏建模真的很累吗?前景怎么样?又需要哪样的基础
- 论文之Unrolled Optimization with Deep Priors 深先验展开优化
- iOS获取苹果touch-ID,faceID密码弹窗
热门文章
- AFA人工鱼群算法函数优化求解实例C++(2020.11.4)
- 目标跟踪 MOSSE(Visual Object Tracking using Adaptive Correlation Filters)
- C++、C++-OpenCV、Python、Python-Numpy、MATLAB的除法取余(余数)方法总结
- VMware10安装CentOS6.7
- 社区团购微信小程序开发
- 【OpenCV 例程 300 篇】101. 自适应中值滤波器
- Eplan绘图软件:Eplan P8 2.9 SP1破解
- 数据分析与可视化概述
- ubuntu 下WebStorm 无法输入中文
- 毫米波雷达人体姿态估计数据集整理 1 -- Python读取含合并单元格的excel