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编写屏幕截图程序方法
Feb 18 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
May 28 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python标准库笔记struct模块的使用
Feb 22 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
Python最小二乘法矩阵
Jan 02 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
python的reverse函数翻转结果为None的问题
May 11 Python
Python OpenCV快速入门教程
Apr 17 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新手上路(五)
2006/10/09 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
解决layer.open后laydate失效的问题
2019/09/06 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
python中字符串前面加r的作用
2015/06/04 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
python help函数实例用法
2020/12/06 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
Weblogic的布署方式
2013/08/23 面试题
消防安全员岗位职责
2014/03/10 职场文书
车辆转让协议书
2014/04/15 职场文书
大学生演讲稿
2014/04/25 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
工程项目合作意向书
2015/05/08 职场文书
大国崛起英国观后感
2015/06/02 职场文书
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang