微信号:PythonTZXY

介绍:每天更新,更新python相关的知识.希望诸君有所收获!

Django的路由系统是非常重要的,路由是一定要会的!零基础也能学

2018-04-13 14:54 Python学习交流

URLconf配置

基本格式

在urls.py文件中配置

from django.conf.urls import urlurlpatterns = [ url(正则表达式, views视图函数,参数,别名),]

这里需要注意的是:Django 2.0版本中的路由系统已经替换成下面的写法(官方文档)

参数说明

  • 正则表达式:一个正则表达式字符串,用来匹配相关的路径;

  • views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串。和视图函数相同的字符串,用来映射;

  • 参数:可选的要传递给视图函数的默认参数(字典形式)

  • 别名:一个可选的name参数。

正则表达式详解

基本配置

注意事项

  1. urlpatterns 中的元素按照书写顺序从上往下逐一遍历匹配正则表达式,一旦匹配成功则不再继续;

  2. 若要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配);

  3. 不需要添加一个前导的反斜杠,因为每个URL都有。例如,应该是^articles而不是^/articles;

  4. 每个正则表达式前面的 'r' 是可选的,但是建议加上。

分组命名匹配

URLconf匹配的位置

捕获的参数永远都是字符串

  每个在URLconf中捕获的参数都作为一个普通的Python字符串传递给视图,无论正则表达式使用的是什么匹配方式。例如,下面这行URLconf 中:

在上面的例子中,两个URL模式指向相同的view - views.page - 但是第一个模式并没有从URL中捕获任何东西。

如果第一个模式匹配上了,page()函数将使用其默认参数num=“1”,如果第二个模式匹配,page()将使用正则表达式捕获到的num值。

include其他的URLconfs

传递额外的参数给视图函数

URLconfs 具有一个钩子,让你传递一个Python 字典作为额外的参数传递给视图函数。

django.conf.urls.url() 函数可以接收一个可选的第三个参数,它是一个字典,表示想要传递给视图函数的额外关键字参数。

例如:

在这个例子中,对于/blog/2005/请求,Django 将调用views.year_archive(request, year='2005', foo='bar')。

这个技术在Syndication 框架中使用,来传递元数据和选项给视图。

命名URL和URL反向解析

url(r'^home', views.home, name='home'), # 给我的url匹配模式起名为 homeurl(r'^index/(d*)', views.index, name='index'), # 给我的url匹配模式起名为index

根据这里的设计,某一年nnnn对应的归档的URL是/articles/nnnn/

你可以在模板的代码中使用下面的方法获得它们:

在Python 代码中,这样使用:

命名空间模式

即使不同的APP使用相同的URL名称,URL的命名空间模式也可以让你唯一反转命名的URL。

举个例子:

project中的urls.py

app01中的urls.py

app02中的urls.py

现在,我的两个app中 url名称重复了,我反转URL的时候就可以通过命名空间的名称得到我当前的URL。

语法:

'命名空间名称:URL名称'

模板中使用:

谢谢阅读,如有侵权请联系小编删除!


 
Python学习交流 更多文章 利用Python进行手机APP抓包!不就一个小斗鱼平台吗? 搜狗也发布了API!基于Python3写的!Python不是平白无故火起来的 Python各种学习资料和精品免费课程随便领 药的价格是固定的吗?用Python分析了上千家药房!远离被宰! python+flask强强结合!分分钟就能干掉阿里云日志!毫无脾气!
猜您喜欢 为什么你还没有对象?真心话 深度学习祖师 Hinton 亲自授权 | 《神经网络》中文字幕版 【活动报名】CCF TF 02:与25家Top技术团队专家共论AI时代的互联网运维 【三分钟精通C语言指针】C语言指针总结精华 给初学者:如何用 Django 写一个编程派