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编写简单文件夹内图片浏览工具
Aug 17 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
利用python修改json文件的value方法
Dec 31 Python
Python数据可视化之画图
Jan 15 Python
Python爬虫实现验证码登录代码实例
May 10 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
简单了解Python多态与属性运行原理
Jun 15 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 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 文章调用类代码
2011/08/11 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
jQuery基础框架浅入剖析
2012/12/27 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
Vue动态实现评分效果
2017/05/24 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
微信小程序工具函数封装
2019/10/28 Javascript
layui数据表格重载实现往后台传参
2019/11/15 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python有证书的加密解密实现方法
2014/11/19 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
selenium如何定位span元素的实现
2021/01/13 Python
Python操作Excel的学习笔记
2021/02/18 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
资深地理教师自我评价
2013/09/21 职场文书
母亲节演讲稿
2014/05/27 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang