【原创】 python django…

来源:互联网 发布:陕钢集团网络大学 编辑:程序博客网 时间:2024/05/21 05:57
如下,假设三个函数都要调用一个方法去验证用户是否登陆:
#views.py
def my_view1(request): if not request.user.is_authenticated():return HttpResponseRedirect('/accounts/login/') # ... returnrender_to_response('template1.html') def my_view2(request): if notrequest.user.is_authenticated(): returnHttpResponseRedirect('/accounts/login/') # ... returnrender_to_response('template2.html') def my_view3(request): if notrequest.user.is_authenticated(): returnHttpResponseRedirect('/accounts/login/') # ... returnrender_to_response('template3.html')
#urls.py
from django.conf.urls.defaults import * from mysite.views importrequires_login, my_view1, my_view2, my_view3 urlpatterns =patterns('', (r'^view1/$', my_view1), (r'^view2/$', my_view2),(r'^view3/$', my_view3), )
my_view1,my_view2,my_view3,都要进行一个判断用户状态的步骤,那么可以进行一个重构:

#views.py
def my_view1(request): #if not request.user.is_authenticated(): #return HttpResponseRedirect('/accounts/login/') # ... returnrender_to_response('template1.html') def my_view2(request): #if notrequest.user.is_authenticated(): # returnHttpResponseRedirect('/accounts/login/') # ... returnrender_to_response('template2.html') def my_view3(request): #if notrequest.user.is_authenticated(): # returnHttpResponseRedirect('/accounts/login/') # ... returnrender_to_response('template3.html') def requires_login(view): defnew_view(request, *args, **kwargs): if notrequest.user.is_authenticated(): returnHttpResponseRedirect('/accounts/login/') return view(request,*args, **kwargs) return new_view
#urls.py
from django.conf.urls.defaults import * from mysite.views importrequires_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)),)



0 0
原创粉丝点击