在Django框架中伪造捕捉到的URLconf值的方法
2015-07-18 11:57
399 查看
比如说你有匹配某个模式的一堆视图,以及一个并不匹配这个模式但视图逻辑是一样的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
您可能感兴趣的文章:
相关文章推荐
- windows+apache+mod_python配置django运行环境
- python Django连接MySQL数据库做增删改查
- django自定义Field实现一个字段存储以逗号分隔的字符串
- 在Python的Django框架中加载模版的方法
- 详解Django中的form库的使用
- Python中DJANGO简单测试实例
- Python的Django框架中的数据库配置指南
- 在Django的URLconf中进行函数导入的方法
- 使用Python的Django框架中的压缩组件Django Compressor
- 对于Python的Django框架部署的一些建议
- Python的Django框架中的Context使用
- 详解Python的Django框架中的templates设置
- Django中处理出错页面的方法
- Django框架中方法的访问和查找
- Django中模型Model添加JSON类型字段的方法
- python中django框架通过正则搜索页面上email地址的方法
- Python的Django框架中的URL配置与松耦合
- Python中下划线的使用方法
- 在Python的Django框架下使用django-tagging的教程