浏览 5287 次
锁定老帖子 主题:django 简化 view 函数的编写
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-22
from django.shortcuts import render_to_response from django.template.context import RequestContext def template_name(func): def view(request,template_name,*args,**keys): result=func(request,*args,**keys) if type(result)!=dict: return result return render_to_response( template_name, result, context_instance=RequestContext(request, result) ) return view 2.使用 @template_name def video(request,id): return { 'video':Video.objects.get(id=id) } 3.urls.py传入参数 (r'^channel/(?P<id>[0-9]+)/page/(?P<page>[0-9]+)',channel_list, {'template_name': 'videos/channel.html'},"videos_channel"), 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-23
其实这么简化我感觉没什么意义~
可能看起来更难懂 |
|
返回顶楼 | |
发表时间:2007-08-23
可以不用写 context_instance=RequestContext(request, result)
|
|
返回顶楼 | |
发表时间:2007-08-24
有些代码不管写在哪里都得写。
这样做将模板的配置放到url里,我觉得不是很符合开发习惯。 context_instance=RequestContext(request, result) 这句通常情况下也是不需要加的。 |
|
返回顶楼 | |
发表时间:2007-08-24
如果涉及到用户,每一页几乎都要context_instance=RequestContext(request, result)
或者,你自定义了一个TEMPLATE_CONTEXT_PROCESSORS,用来给模板传一个参数media_root 也需要context_instance 将模板的配置放到url里,我个人倒是更喜欢,原因如下: 1.generic view就是这么干的 2.view我更喜欢写成generic的:) 不过,可以考虑加一个默认值 |
|
返回顶楼 | |
发表时间:2008-06-25
zuroc 写道 可以不用写 context_instance=RequestContext(request, result)
我试过,不行的,必须这样写才行: return render_to_response('xxx.html',{'xx':'xx'},RequestContext(request)) 请问 张 教 主,还有啥更好的办法? |
|
返回顶楼 | |
发表时间:2008-06-25
你的代码是怎么写的?
不过好久没有碰django,也忘得差不多了. 但按道理是可以的, 就是一个嵌套函数. |
|
返回顶楼 | |
发表时间:2008-06-27
render_to_response 里封装的应该是 Context 而不是 RequestContext,所以应该是不行的。
|
|
返回顶楼 | |