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 09 Python
Python使用Socket(Https)Post登录百度的实现代码
May 18 Python
整理Python中的赋值运算符
May 13 Python
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
用python处理MS Word的实例讲解
May 08 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
使用pandas读取文件的实现
Jul 31 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
python 数据类型强制转换的总结
Jan 25 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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生成Flash动画的实现代码
2010/03/12 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
chrome原生方法之数组
2011/11/30 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
2011/12/26 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
2014/12/09 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
JavaScipt选取文档元素的方法(推荐)
2016/08/05 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
pandas的object对象转时间对象的方法
2018/04/11 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Berghaus官网:户外服装和设备,防水服
2020/01/17 全球购物
物业管理大学生个人的自我评价
2013/10/10 职场文书
2015年电工工作总结
2015/04/10 职场文书
2015年财政局工作总结
2015/05/21 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
会计岗位工作总结
2015/08/12 职场文书
追悼会家属答谢词
2015/09/29 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书