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 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
Django中url的反向查询的方法
Mar 14 Python
Python logging模块用法示例
Aug 28 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
python Django 反向访问器的外键冲突解决
May 20 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
使用anaconda安装pytorch的实现步骤
Sep 03 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
摩卡咖啡
2021/03/03 咖啡文化
php中stdClass的用法分析
2015/02/27 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
帝国cms目录结构分享
2015/07/06 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
date.parse在IE和FF中的区别
2010/07/29 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
Python遍历目录的4种方法实例介绍
2015/04/13 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
python计算n的阶乘的方法代码
2019/10/25 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
初中数学教学反思
2014/01/16 职场文书
科研先进个人典型材料
2014/01/31 职场文书
争论的故事教学反思
2014/02/06 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
英文求职信范文
2014/05/23 职场文书
支部鉴定材料
2014/06/02 职场文书
婚庆公司计划书
2014/09/15 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL