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线程池的实现实例
Nov 18 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
python更改已存在excel文件的方法
May 03 Python
python3实现爬取淘宝美食代码分享
Sep 23 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
python实现的config文件读写功能示例
Sep 24 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python Numpy之linspace用法说明
Apr 17 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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过滤危险html代码的函数
2008/07/22 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
AngularJs自定义服务之实现签名和加密
2016/08/02 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
js方法数据验证的简单实例
2016/09/17 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
js中的DOM模拟购物车功能
2017/03/22 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
javascript中的replace函数(带注释demo)
2018/01/07 Javascript
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
Python单元和文档测试实例详解
2019/04/11 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
仓库管理专业个人自我评价范文
2013/11/11 职场文书
社区文艺活动方案
2014/08/19 职场文书
委托证明范本
2014/11/25 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
公司周年庆典致辞
2015/07/30 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
Redis主从复制操作和配置详情
2022/09/23 Redis