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

\d+) 里面的参数将作为第二个参数传递给视图函数 detail(request, article_id) ,这里参数的名字必须一模一样。因为你在url函数中显示的指定了该参数的名字,当然你也可以不显示的指定,如: url(r'^(\d+)/’, views.detail, name=’detail’) ,这样在视图函数里,第二个参数的名称就随便命名了。它根据位置参数的位置来匹配。

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() 函数详解相关推荐

  1. php 新浪url,PHP URL函数详解

    php url函数: parse_url() parse_url (PHP 3, PHP 4, PHP 5) parse_url -- 解析 URL,归来其构成局部 解释 array parse_ur ...

  2. 【FFmpeg】函数详解(二)

    FFmpeg函数详解 9.av_dump_format 10.avio_open 11.avformat_write_header 12.avcodec_send_frame 13.avcodec_r ...

  3. python3 内置函数详解

    内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小. # 如果参数是复数,则返回其大小.>>> abs(-25) 25>> ...

  4. timm 视觉库中的 create_model 函数详解

    timm 视觉库中的 create_model 函数详解 最近一年 Vision Transformer 及其相关改进的工作层出不穷,在他们开源的代码中,大部分都用到了这样一个库:timm.各位炼丹师 ...

  5. gzdeflate函数_PHP中的gzcompress、gzdeflate、gzencode函数详解

    这篇文章主要介绍了PHP中的gzcompress.gzdeflate.gzencode函数详解,本文深入分析了它们的相同点和不同点,需要的朋友可以参考下 PHP中存在一组看起来很像的压缩解压函数: 压 ...

  6. 脚本——web_custom_request函数详解

    web_custom_request函数详解 在LR中当使用HTML录制方式时,录制的脚本中主要由函数web_link().web_submit_form().web_url().web_submit ...

  7. python中append函数解析_对python中的pop函数和append函数详解

    对python中的pop函数和append函数详解 pop()函数 1.描述 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法 pop()方法语法: list. ...

  8. ajaxsetup获取ajax的url_jQuery.ajaxSetup() 函数详解

    该函数用于更改jQuery中AJAX请求的默认设置选项.之后执行的所有AJAX请求,如果对应的选项参数没有设置, 将使用更改后的默认设置. //设置AJAX的全局默认选项 $.ajaxSetup( { ...

  9. Linux系统调用-- recv/recvfrom/recvmsg函数详解(转)

    Linux系统调用-- recv/recvfrom/recvmsg函数详解 2007-09-10 23:37 [recv/recvfrom/recvmsg系统调用]   功能描述: 从套接字上接收一个 ...

  10. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

最新文章

  1. 平稳随机序列的自相关函数和功率谱密度
  2. Video Question Answering综述
  3. Java高并发系统的限流策略
  4. 【渝粤题库】陕西师范大学164202 市场营销学 作业(专升本)
  5. 年轻人不要上来就说我要创业
  6. windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
  7. 论文赏析[ACL18]直接到树:基于神经句法距离的成分句法分析
  8. 项目如何开始:怎样和客户谈需求(转)
  9. Kafka分区分配策略(Partition Assignment Strategy
  10. Monitor线程同步
  11. php旧物交易开源代码_php二手市场交易系统毕业设计(含源文件)
  12. iphone捷径大全_iPhone捷径,助您一臂之力
  13. 软件开发几个阶段的内容以及产物
  14. 随身WIFI安装Debian流程记录
  15. Excel基础-数据方向
  16. Python面试题大全总结
  17. Threejs系列--14游戏开发--沙漠赛车游戏【纹理贴图之loading加载】
  18. 3D游戏建模真的很累吗?前景怎么样?又需要哪样的基础
  19. 论文之Unrolled Optimization with Deep Priors 深先验展开优化
  20. iOS获取苹果touch-ID,faceID密码弹窗

热门文章

  1. AFA人工鱼群算法函数优化求解实例C++(2020.11.4)
  2. 目标跟踪 MOSSE(Visual Object Tracking using Adaptive Correlation Filters)
  3. C++、C++-OpenCV、Python、Python-Numpy、MATLAB的除法取余(余数)方法总结
  4. VMware10安装CentOS6.7
  5. 社区团购微信小程序开发
  6. 【OpenCV 例程 300 篇】101. 自适应中值滤波器
  7. Eplan绘图软件:Eplan P8 2.9 SP1破解
  8. 数据分析与可视化概述
  9. ubuntu 下WebStorm 无法输入中文
  10. 毫米波雷达人体姿态估计数据集整理 1 -- Python读取含合并单元格的excel