2013-05-07 28 views
0

我知道我可以檢查用戶是否使用request.user.is_authenticated()登錄,並且我想爲我的基於類的視圖使用裝飾器,如裝飾器的函數views:login_required,我該怎麼辦?django檢查是否已登錄,修飾符爲基於class_based的視圖

我想是這樣的:

class AddCompanyInfoHandler(View): 
    model = Company 

    @check_login_decorator 
     def get(self, request): 
     form = EnrollCompanyForm() 
     return render(request, 'student/company_form.html', {'form': form,}) 

    @check_login_decorator 
     def post(self, request): 
      form = EnrollCompanyForm(request.POST) 
      if form.is_valid(): 
       form_data = form.cleaned_data 
       current_user = request.user 
       company = Company.objects.create_company(current_user, form_data) 
       company.save() 

       return HttpResponse("Create Company USer Successfully!") 
      else: 
       return render(request, 'student/company_form.html', {'form': form,}) 
+0

供參考,http://stackoverflow.com/questions/6069070/how-to-use-permission-required-decorators-on-django-class-based-views。 – alecxe 2013-05-07 04:01:05

回答

2

This我帶來了一些光。

總之,您必須修飾類的派遣方法,並且該類的每個實例都將受到login_decorator的保護。你的情況應該是這樣的:

from django.contrib.auth.decorators import login_required 
from django.utils.decorators import method_decorator 

class AddCompanyInfoHandler(View): 

    ... 

    @method_decorator(login_required) 
    def dispatch(self, *args, **kwargs): 
     return super(AddCompanyInfoHandler, self).dispatch(*args, **kwargs) 

注:還有在this問題很好的信息。

希望它能幫助!

+0

是的。我也在使用'method_decorator'。 – 2013-05-07 06:40:23

+0

感謝您的回答:) – 2013-05-07 07:03:54

0

您必須分配需要全班登錄。

@login_required 
class AddCompanyInfoHandler(View): 
    ... 

同時也要注意壓痕,(參照類的功能)

如果你正在使用裸函數的觀點,而不是類,裝飾是這樣的

@login_required 
def home(request): 
    if request.method=='GET': 
     ... 
    else: 
     ... 
+0

感謝您的回答:) – 2013-05-07 07:04:17

相關問題