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的Flask框架中@app.route的用法教程
Mar 31 Python
在Python中处理列表之reverse()方法的使用教程
May 21 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
python实现图片彩色转化为素描
Jan 15 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
pytorch实现MNIST手写体识别
Feb 14 Python
如何使用python切换hosts文件
Apr 29 Python
pandas 数据类型转换的实现
Dec 29 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中date()日期函数有关参数整理
2011/07/19 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
Python 第一步 hello world
2009/09/25 Python
python字典get()方法用法分析
2015/04/17 Python
python控制台中实现进度条功能
2015/11/10 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
Python中django学习心得
2017/12/06 Python
python实现简易版计算器
2020/06/22 Python
python+opencv识别图片中的圆形
2020/03/25 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
Django用户身份验证完成示例代码
2020/04/03 Python
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
分公司经理岗位职责
2013/11/11 职场文书
十八大报告观后感
2014/01/28 职场文书
函授毕业个人自我评价
2014/02/20 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python