Django框架中处理URLconf中特定的URL的方法


Posted in Python onJuly 20, 2015

有时你有一个模式来处理在你的URLconf中的一系列URL,但是有时候需要特别处理其中的某个URL。 在这种情况下,要使用将URLconf中把特殊情况放在首位的线性处理方式 。

比方说,你可以考虑通过下面这个URLpattern所描述的方式来向Django的管理站点添加一个目标页面

urlpatterns = patterns('',
  # ...
  ('^([^/]+)/([^/]+)/add/$', views.add_stage),
  # ...
)

这将匹配像 /myblog/entries/add/ 和 /auth/groups/add/ 这样的URL 。然而,对于用户对象的添加页面( /auth/user/add/ )是个特殊情况,因为它不会显示所有的表单域,它显示两个密码域等等。 我们 可以 在视图中特别指出以解决这种情况:

def add_stage(request, app_label, model_name):
  if app_label == 'auth' and model_name == 'user':
    # do special-case code
  else:
    # do normal code

不过,就如我们多次在这章提到的,这样做并不优雅: 因为它把URL逻辑放在了视图中。 更优雅的解决方法是,我们要利用URLconf从顶向下的解析顺序这个特点:

urlpatterns = patterns('',
  # ...
  ('^auth/user/add/$', views.user_add_stage),
  ('^([^/]+)/([^/]+)/add/$', views.add_stage),
  # ...
)

在这种情况下,象 /auth/user/add/ 的请求将会被 user_add_stage 视图处理。 尽管URL也匹配第二种模式,它会先匹配上面的模式。 (这是短路逻辑。)

Python 相关文章推荐
Python中实现对list做减法操作介绍
Jan 09 Python
Python中的rfind()方法使用详解
May 19 Python
django中的HTML控件及参数传递方法
Mar 20 Python
python实现windows下文件备份脚本
May 27 Python
Python实现Event回调机制的方法
Feb 13 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
利用matplotlib实现根据实时数据动态更新图形
Dec 13 Python
python中JWT用户认证的实现
May 18 Python
Pytorch转tflite方式
May 25 Python
python switch 实现多分支选择功能
Dec 21 Python
Python深度学习之Pytorch初步使用
May 20 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 #Python
python通过socket查询whois的方法
Jul 18 #Python
Python字符串匹配算法KMP实例
Jul 18 #Python
Python通过正则表达式选取callback的方法
Jul 18 #Python
Django的URLconf中使用缺省视图参数的方法
Jul 18 #Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 #Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 #Python
You might like
使用PHP获取网络文件的实现代码
2010/01/01 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
WebPack基础知识详解
2017/01/16 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
详解使用Python处理文件目录的相关方法
2015/10/16 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
J2EE面试题集锦(附答案)
2013/08/16 面试题
机械系大学毕业生推荐信
2013/11/27 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
采购助理岗位职责
2014/02/16 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
运动会200米广播稿
2015/08/19 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python