2013-05-07 3 views
0

나는 사용자가) (request.user.is_authenticated 사용하여 로그인하면 내가 확인하실 수 있습니다 알고 class_based보기 위해, 장식을 확인하고 난 함수의 장식처럼, 내 class_based보기 위해 장식을 사용하려면 views : login_required, 어떻게해야합니까? 당신은 전체 클래스에 필요한 로그인을 할당해야장고는

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

답변

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'를 사용하고 있습니다. –

+0

답변 해 주셔서 감사합니다 :) –

0

:

나는 이런 식으로 뭔가를 할 수 있습니다.

@login_required 
class AddCompanyInfoHandler(View): 
    ... 

그리고

대신 클래스의 전망에 대한 노출 기능을 사용하는 경우 (클래스의 기능을 참조) 들여 쓰기, 조심은 장식이

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

답변 해 주셔서 감사합니다. –