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的多态性实例分析
Jul 07 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
python爬取微信公众号文章
Aug 31 Python
python pickle存储、读取大数据量列表、字典数据的方法
Jul 07 Python
python爬取盘搜的有效链接实现代码
Jul 20 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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实现货币换算的方法
2014/11/29 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
extjs3 combobox取value和text案例详解
2013/02/06 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Python网站验证码识别
2016/01/25 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
python绘制封闭多边形教程
2020/02/18 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
python regex库实例用法总结
2021/01/03 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
《识字五》教学反思
2014/03/01 职场文书
服装设计师求职信
2014/06/04 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers