在Django框架中伪造捕捉到的URLconf值的方法


Posted in Python onJuly 18, 2015

比如说你有匹配某个模式的一堆视图,以及一个并不匹配这个模式但视图逻辑是一样的URL。 这种情况下,你可以通过向同一个视图传递额外URLconf参数来伪造URL值的捕捉。

例如,你可能有一个显示某一个特定日子的某些数据的应用,URL类似这样的:

/mydata/jan/01/
/mydata/jan/02/
/mydata/jan/03/
# ...
/mydata/dec/30/
/mydata/dec/31/

这太简单了,你可以在一个URLconf中捕捉这些值,像这样(使用命名组的方法):

urlpatterns = patterns('',
  (r'^mydata/(?P<month>\w{3})/(?P<day>\d\d)/$', views.my_view),
)

然后视图函数的原型看起来会是:

def my_view(request, month, day):
  # ....

这种解决方案很直接,没有用到什么你没见过的技术。 当你想添加另外一个使用 my_view 视图但不包含month和/或者day的URL时,问题就出现了。

比如你可能会想增加这样一个URL, /mydata/birthday/ , 这个URL等价于 /mydata/jan/06/ 。这时你可以这样利用额外URLconf参数:

urlpatterns = patterns('',
  (r'^mydata/birthday/$', views.my_view, {'month': 'jan', 'day': '06'}),
  (r'^mydata/(?P<month>\w{3})/(?P<day>\d\d)/$', views.my_view),
)

在这里最帅的地方莫过于你根本不用改变你的视图函数。 视图函数只会关心它 获得 了 参数,它不会去管这些参数到底是捕捉回来的还是被额外提供的。month和day

Python 相关文章推荐
Python实现list反转实例汇总
Nov 11 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
Python实现的递归神经网络简单示例
Aug 11 Python
Python IDLE清空窗口的实例
Jun 25 Python
python生成九宫格图片
Nov 19 Python
python3利用Socket实现通信的方法示例
May 06 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python通过socketserver处理多个链接
Mar 18 Python
Python tornado上传文件的功能
Mar 26 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
Django中传递参数到URLconf的视图函数中的方法
Jul 18 #Python
在Django的URLconf中使用命名组的方法
Jul 18 #Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 #Python
在Django的URLconf中进行函数导入的方法
Jul 18 #Python
在Django的form中使用CSS进行设计的方法
Jul 18 #Python
在Django的视图中使用form对象的方法
Jul 18 #Python
详解Django中的form库的使用
Jul 18 #Python
You might like
PHP模拟SQL Server的两个日期处理函数
2006/10/09 PHP
WHOIS类的修改版
2006/10/09 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
基于matplotlib xticks用法详解
2020/04/16 Python
python实现扫雷小游戏
2020/04/24 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
在校学生职业规划范文
2014/01/08 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
抵押贷款承诺书
2014/05/30 职场文书
学用政策心得体会
2014/09/10 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python