Python的Django框架中URLconf相关的一些技巧整理


Posted in Python onJuly 18, 2015

提供视图配置选项

如果你发布一个Django的应用,你的用户可能会希望配置上能有些自由度。 这种情况下,为你认为用户可能希望改变的配置选项添加一些钩子到你的视图中会是一个很好的主意。 你可以用额外URLconf参数实现。

一个应用中比较常见的可供配置代码是模板名字:

def my_view(request, template_name):
  var = do_something()
  return render_to_response(template_name, {'var': var})

了解捕捉值和额外参数之间的优先级 额外的选项

当冲突出现的时候,额外URLconf参数优先于捕捉值。 也就是说,如果URLconf捕捉到的一个命名组变量和一个额外URLconf参数包含的变量同名时,额外URLconf参数的值会被使用。

例如,下面这个URLconf:

from django.conf.urls.defaults import *
from mysite import views

urlpatterns = patterns('',
  (r'^mydata/(?P<id>\d+)/$', views.my_view, {'id': 3}),
)

这里,正则表达式和额外字典都包含了一个 id 。硬编码的(额外字典的) id 将优先使用。 就是说任何请求(比如, /mydata/2/ 或者 /mydata/432432/ )都会作 id 设置为 3 对待,不管URL里面能捕捉到什么样的值。

聪明的读者会发现在这种情况下,在正则表达式里面写上捕捉是浪费时间的,因为 id 的值总是会被字典中的值覆盖。 没错,我们说这个的目的只是为了让你不要犯这样的错误。

调试模式中的特例

说到动态构建 urlpatterns,你可能想利用这一技术,在 Django 的调试模式下修改 URLconf 的行为。 为了做到这一点,只要在运行时检查 DEBUG 配置项的值即可,如:

from django.conf import settings
from django.conf.urls.defaults import *
from mysite import views

urlpatterns = patterns('',
  (r'^$', views.homepage),
  (r'^(\d{4})/([a-z]{3})/$', views.archive_month),
)

if settings.DEBUG:
  urlpatterns += patterns('',
    (r'^debuginfo/$', views.debug),
  )

在这个例子中,URL链接/debuginfo/ 只在你的 DEBUG 配置项设为 True 时才有效。

Python 相关文章推荐
Python 自动补全(vim)
Nov 30 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
Python_LDA实现方法详解
Oct 25 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
Python 通过打码平台实现验证码的实现
May 13 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
python修改文件内容的3种方法详解
Nov 15 Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 Python
python else语句在循环中的运用详解
Jul 06 Python
django教程如何自学
Jul 31 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
opencv实现图像几何变换
Mar 24 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 #Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 #Python
在Django的URLconf中使用命名组的方法
Jul 18 #Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 #Python
在Django的URLconf中进行函数导入的方法
Jul 18 #Python
在Django的form中使用CSS进行设计的方法
Jul 18 #Python
在Django的视图中使用form对象的方法
Jul 18 #Python
You might like
Protoss建筑一览
2020/03/14 星际争霸
PHP 字符串操作入门教程
2006/12/06 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
javascript回调函数详解
2018/02/06 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
vue-property-decorator用法详解
2019/12/12 Javascript
[01:01:14]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第一场 11.21
2020/11/23 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python代码实现KNN算法
2017/12/20 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
python K近邻算法的kd树实现
2018/09/06 Python
django解决跨域请求的问题
2018/11/11 Python
详解python中的index函数用法
2019/08/06 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
团员学习总结的自我评价范文
2013/10/14 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
工程部经理岗位职责
2015/02/02 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
企业安全生产检查制度
2015/08/06 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书