다른 사람들은 인증이 필요한 모든보기에서 로그인 데코레이터를 사용해야한다고 지적했기 때문에.
당신은 단순히 이런 식으로 포장하여 다시 사용할 수 있습니다
auth = login_required(login_url='/accounts/login/')
@auth
def index(request):
return render(request, 'post.html', {})
@auth
def new(request):
return render(request, 'post-add.html',)
을 또는 당신은 클래스 기반 뷰를 원한다면, 내가 선호하는이 :
class AuthMixin(object):
@method_decorator(login_required(login_url='/accounts/login/'))
def dispatch(self, *args, **kwargs):
return super(AuthMixin, self).dispatch(*args, **kwargs)
class IndexView(AuthMixin, TemplateView):
template_name = 'post.html'
class AddView(AuthMixin, TemplateView):
template_name = 'post-add.html'
그것을 조금 단순화하기 위해 more를 사용하면 mixin을 TemplateView로부터 상속 받아 모든 로그인에 필요한보기를위한 단일 기본 클래스로 사용할 수 있습니다.
또한 두 가지 방법 중 하나를 사용하여 설정에서 로그인 URL을 검색하는 것이 좋습니다.
모든보기에서 로그인 URL을 문자열로 지정하는 것은 좋지 않습니다. 특히 기본 django 설정으로 설정하면 어쨌든 – Sayse