django--视图函数的包装(Wrapping view function)
2014-05-16 11:20
531 查看
下边的代码包含很多重复的代码:
每个视图都要检查用户是否已经认证,未认证会被重定向到/accounts/login/,我们可以这样:
这样就可以在URLconf中直接使用requires_login来包装实现:
def my_view1(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/') # ... return render_to_response('template1.html') def my_view2(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/') # ... return render_to_response('template2.html') def my_view3(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/') # ... return render_to_response('template3.html')
每个视图都要检查用户是否已经认证,未认证会被重定向到/accounts/login/,我们可以这样:
def requires_login(view): def new_view(request, *args, **kwargs): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/') return view(request, *args, **kwargs) return new_view
这样就可以在URLconf中直接使用requires_login来包装实现:
from django.conf.urls.defaults import * from mysite.views import requires_login, my_view1, my_view2, my_view3 urlpatterns = patterns('', (r'^view1/$', requires_login(my_view1)), (r'^view2/$', requires_login(my_view2)), (r'^view3/$', requires_login(my_view3)), )
相关文章推荐
- 13.Django之view初探视图函数(一)
- 在Python的Django框架中包装视图函数
- 详解Django通用视图中的函数包装
- 详解Django通用视图中的函数包装
- 在Python的Django框架中包装视图函数
- The Django Book的一个view函数改用django模板实现
- 【自定义视图控件】入门篇----继承View以及主要的函数
- 函数VIEW_MAINTENANCE_CALL:视图变报表
- 在View视图类中使用CSplitterWnd来拆分视图窗口(不在CMainFrame类的虚函数OnCreateClient中拆分视图框架窗口)
- 表视图单元函数 tableView:cellForRowAtIndex:
- Django中URL视图函数的一些高级概念介绍
- VS2013 bug : 无法使用std::function包装成员函数
- 函数VIEW_MAINTENANCE_CALL:视图变报表
- Document-View Interaction Functions视图与文档之间的通讯函数
- Django中传递参数到URLconf的视图函数中的方法
- 在webView 中使用JS 调用 Android / IOS的函数 Function
- 在View视图类中使用CSplitterWnd来拆分视图窗口(不在CMainFrame类的虚函数OnCreateClient中拆分视图框架窗口)
- ABAP函数:VIEW_MAINTENANCE_CALL(维护表视图等)
- Android中图片处理(压缩 保存 显示 截屏 视图View转为图片Bitmap)函数工具类
- 函数VIEW_MAINTENANCE_CALL:视图变报表