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 strip lstrip rstrip使用方法
Sep 06 Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 Python
Python实现给qq邮箱发送邮件的方法
May 28 Python
Python的标准模块包json详解
Mar 13 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
Python pandas用法最全整理
Aug 04 Python
用python写测试数据文件过程解析
Sep 25 Python
Python参数传递实现过程及原理详解
May 14 Python
python3中数组逆序输出方法
Dec 01 Python
pycharm 关闭search everywhere的解决操作
Jan 15 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中文本操作的类
2007/03/17 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
python基础教程之数字处理(math)模块详解
2014/03/25 Python
两个命令把 Vim 打造成 Python IDE的方法
2016/03/20 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
.NET方向面试题
2014/11/20 面试题
公司司机岗位职责
2014/02/07 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js