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使用三角迭代计算圆周率PI的方法
Mar 20 Python
Python实现统计单词出现的个数
May 28 Python
深入浅析Python中的yield关键字
Jan 24 Python
python实现单向链表详解
Feb 08 Python
python如何在列表、字典中筛选数据
Mar 19 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
python3 实现函数写文件路径的正确方法
Nov 27 Python
PyQt5的QWebEngineView使用示例
Oct 20 Python
解决Python字典查找报Keyerror的问题
May 26 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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过滤★等特殊符号的正则
2014/01/27 PHP
php中return的用法实例分析
2015/02/28 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
纯js实现瀑布流布局及ajax动态新增数据
2016/04/07 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
js实现3D旋转相册
2020/08/02 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
python对视频画框标记后保存的方法
2018/12/07 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
python tornado修改log输出方式
2019/11/18 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
团员个人的自我评价
2013/12/02 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
兴趣班停课通知
2015/04/24 职场文书
读书笔记格式
2015/07/02 职场文书
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis