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实现冒泡,插入,选择排序简单实例
Aug 18 Python
python中星号变量的几种特殊用法
Sep 07 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
Python中使用__new__实现单例模式并解析
Jun 25 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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实现采集程序原理和简单示例代码
2007/03/18 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
php新建文件的方法实例
2019/09/26 PHP
JavaScript学习历程和心得小结
2010/08/16 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
JS验证字符串功能
2017/02/22 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
Python中的面向对象编程详解(上)
2015/04/13 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
基于Python实现天天酷跑功能
2021/01/06 Python
python反扒机制的5种解决方法
2021/02/06 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
档案接收函
2014/01/13 职场文书
合同意向书范本
2014/07/30 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
小学总务工作总结
2015/08/13 职场文书
团委副书记工作总结
2015/08/14 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
SQL Server表分区删除详情
2021/10/16 SQL Server
Python学习之迭代器详解
2022/04/01 Python