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的框架中为MySQL实现restful接口的教程
Apr 08 Python
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
Python中用max()方法求最大值的介绍
May 15 Python
Python实现队列的方法
May 26 Python
python基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python解惑之True和False详解
Apr 24 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
Sanic框架路由用法实例分析
Jul 16 Python
python实现ID3决策树算法
Aug 29 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 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
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python之wxPython菜单使用详解
2014/09/28 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
python创建子类的方法分析
2019/11/28 Python
python实现字典嵌套列表取值
2019/12/16 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
上课迟到检讨书
2014/01/19 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
项目工作说明书
2014/07/29 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书