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实现的多线程端口扫描工具分享
Jan 21 Python
python中global用法实例分析
Apr 30 Python
python实现的文件同步服务器实例
Jun 02 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
python 对多个csv文件分别进行处理的方法
Jan 07 Python
windows下numpy下载与安装图文教程
Apr 02 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
python自动生成model文件过程详解
Nov 02 Python
pytorch 准备、训练和测试自己的图片数据的方法
Jan 10 Python
python实现可下载音乐的音乐播放器
Feb 25 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笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
php 可变函数使用小结
2018/06/12 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
python简单实现刷新智联简历
2016/03/30 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python中反射和描述器总结
2018/09/23 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
django-csrf使用和禁用方式
2020/03/13 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
财务与信息服务专业推荐信
2013/11/28 职场文书
招商业务员岗位职责
2013/12/16 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
正则表达式基础与常用验证表达式
2022/06/16 Javascript