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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
对numpy Array [: ,] 的取值方法详解
Jul 02 Python
python使用matplotlib绘制热图
Nov 07 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
Django 路由控制的实现
Jul 17 Python
Python partial函数原理及用法解析
Dec 11 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
python属于哪种语言
Aug 16 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
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
CI框架中zip类应用示例
2014/06/17 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
JS面向对象编程 for Cookie
2010/09/19 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
python mysqldb连接数据库
2009/03/16 Python
Python中的zip函数使用示例
2015/01/29 Python
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Python中类的初始化特殊方法
2017/12/01 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
超简单使用Python换脸实例
2019/03/27 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
详解python算法常用技巧与内置库
2020/10/17 Python
python try...finally...的实现方法
2020/11/25 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
农田水利实习自我鉴定
2013/09/19 职场文书
会计职业生涯规划书
2014/01/13 职场文书
爱与责任演讲稿
2014/05/20 职场文书
自我检讨书怎么写
2015/05/07 职场文书