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 28 Python
Python 的 Socket 编程
Mar 24 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python实现维吉尼亚加密法
Mar 20 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python参数传递及收集机制原理解析
Jun 05 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 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
WHOIS类的修改版
2006/10/09 PHP
Function eregi is deprecated (解决方法)
2013/06/21 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python 实现链表实例代码
2017/04/07 Python
numpy中的高维数组转置实例
2018/04/17 Python
python实现随机漫步算法
2018/08/27 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
python文字转语音的实例代码分析
2019/11/12 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
办公室经理岗位职责
2014/01/01 职场文书
驾驶员岗位职责
2014/01/29 职场文书
护理专业自荐信范文
2014/02/26 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
工作简历自我评价
2015/03/11 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
Python之matplotlib绘制饼图
2022/04/13 Python