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中迭代器(iterator)用法实例分析
Apr 29 Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
Python中正则表达式详解
May 17 Python
django 解决manage.py migrate无效的问题
May 27 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
对python文件读写的缓冲行为详解
Feb 13 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
在python image 中实现安装中文字体
May 16 Python
基于Python把网站域名解析成ip地址
May 25 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
python中round函数保留两位小数的方法
Dec 04 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中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
javascript new fun的执行过程
2010/08/05 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
javascript history对象详解
2017/02/09 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
Bootstrap框架建立树形菜单(Tree)的实例代码
2017/10/30 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
2020/08/21 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue-router重写push方法,解决相同路径跳转报错问题
2020/08/07 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
Python常见数据结构详解
2014/07/24 Python
浅谈MySQL中的触发器
2015/05/05 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
中考冲刺决心书
2014/03/11 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
2015入党自荐书范文
2015/03/05 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技