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标准库之循环器(itertools)介绍
Nov 25 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
Python 阶乘详解
Oct 05 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生成酷炫的四个字符验证码
2016/04/22 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
js实现双色球效果
2020/08/02 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Python数组定义方法
2016/04/13 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
python中requests小技巧
2017/05/10 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
如何更优雅地写python代码
2019/07/02 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
ASP.NET中的身份验证有那些
2012/07/13 面试题
新员工考核评语
2014/12/31 职场文书
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
从原生JavaScript到React深入理解
2022/07/23 Javascript