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中关于日期时间处理的问答集锦
Mar 08 Python
python网络编程学习笔记(一)
Jun 09 Python
Python闭包实现计数器的方法
May 05 Python
在windows系统中实现python3安装lxml
Mar 23 Python
Python简单删除列表中相同元素的方法示例
Jun 12 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
python实现串口自动触发工作的示例
Jul 02 Python
python3.6编写的单元测试示例
Aug 17 Python
python自动识别文本编码格式代码
Dec 26 Python
python 错误处理 assert详解
Apr 20 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
Python3+Appium安装及Appium模拟微信登录方法详解
Feb 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的几个常用数字判断函数代码
2012/04/24 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
js改变文章字体大小的实例代码
2013/11/27 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
js仿QQ邮箱收件人选择与搜索功能
2017/02/10 Javascript
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
python魔法方法-自定义序列详解
2016/07/21 Python
python实现tail -f 功能
2020/01/17 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
园林技术个人的自我评价
2014/01/08 职场文书
自动化毕业生专业自荐书范文
2014/02/04 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
电影地道战观后感
2015/06/04 职场文书
七年级上册生物的课件
2019/08/07 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
MySQL中order by的使用详情
2021/11/17 MySQL