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字典的清单
Apr 04 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python制作exe文件简单流程
Jan 24 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
Python中遍历列表的方法总结
Jun 27 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 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
COM in PHP (winows only)
2006/10/09 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
PHP面向对象法则
2012/02/23 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
js 对小数加法精度处理示例说明
2013/12/27 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
js判断是否是手机页面
2017/03/17 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
读书小明星事迹材料
2014/05/03 职场文书
英语教师个人总结
2015/02/09 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
Python Pandas 删除列操作
2022/03/16 Python
JavaScript实现简单的音乐播放器
2022/08/14 Javascript