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中的魔法方法深入理解
Jul 09 Python
Python 中的with关键字使用详解
Sep 11 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
用Python一键搭建Http服务器的方法
Jun 01 Python
python使用参数对嵌套字典进行取值的方法
Apr 26 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
python输出第n个默尼森数的实现示例
Mar 08 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
python图片验证码识别最新模块muggle_ocr的示例代码
Jul 03 Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 Python
python中pivot()函数基础知识点
Jan 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
php实现ping
2006/10/09 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php注销代码(session注销)
2012/05/31 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
JavaScript类库D
2010/10/24 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
Python中zfill()方法的使用教程
2015/05/20 Python
python 接口返回的json字符串实例
2018/03/27 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
matplotlib.pyplot.plot()参数使用详解
2020/07/28 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
销售工作岗位职责
2013/12/24 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
工作中个人的自我评价
2013/12/31 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
六年级数学教学反思
2014/02/03 职场文书
医德考评自我评价
2014/09/14 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
综合测评自我评价
2015/03/06 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
小学生运动会广播
2015/08/19 职场文书