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实现多行注释的另类方法
Aug 22 Python
python获取文件扩展名的方法
Jul 06 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
python3.5 email实现发送邮件功能
May 22 Python
Python面向对象类继承和组合实例分析
May 28 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
Python分类测试代码实例汇总
Jul 23 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
javascript 特殊字符串
2009/02/25 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
python 判断一个进程是否存在
2009/04/09 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python合并同类型excel表格的方法
2018/04/01 Python
对Python中的@classmethod用法详解
2018/04/21 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
Python BS4库的安装与使用详解
2018/08/08 Python
wxPython的安装与使用教程
2018/08/31 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
python 动态绘制爱心的示例
2020/09/27 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
十八大感想感言
2014/02/10 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
租赁协议书范本
2014/04/22 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
园林系毕业生求职信
2014/06/23 职场文书
2014年超市工作总结
2014/11/19 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python