0
모든 내 페이지에 포함하려는 로그인 클래스 기반보기가 있습니다. 클래스 기반보기를 템플릿 컨텍스트 프로세서로 포함시키는 방법이 있습니까? 아니면 모든 페이지에 다른 방법을 포함시킬 수 있습니까? 당신이 LoginRequiredMixin
에서 django-braces
에서 상속 할 수클래스 기반 뷰가있는 Django 템플릿 컨텍스트 프로세서
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views.generic import TemplateView
class ProtectedView(TemplateView):
template_name = 'secret.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ProtectedView, self).dispatch(*args, **kwargs)
을 또는 :
어느 urls.py
에서와 :
from django.contrib.auth.decorators import login_required, permission_required
from django.views.generic import TemplateView
from .views import VoteView
urlpatterns = patterns('',
(r'^about/', login_required(TemplateView.as_view(template_name="secret.html"))),
(r'^vote/', permission_required('polls.can_vote')(VoteView.as_view())),
)
또는 views.py
에서
class LoginView(RedirectAuthenticatedUserMixin, FormView):
form_class = LoginForm
template_name = "account/login.html"
success_url = None
redirect_field_name = "next"
def form_valid(self, form):
success_url = self.get_success_url()
return form.login(self.request, redirect_url=success_url)
def get_success_url(self):
# Explicitly passed ?next= URL takes precedence
ret = (get_next_redirect_url(self.request,
self.redirect_field_name)
or self.success_url)
return ret
def get_context_data(self, **kwargs):
ret = super(LoginView, self).get_context_data(**kwargs)
signup_url = passthrough_next_redirect_url(self.request,
reverse("account_signup"),
self.redirect_field_name)
redirect_field_value = self.request.REQUEST \
.get(self.redirect_field_name)
ret.update({"signup_url": signup_url,
"site": Site.objects.get_current(),
"redirect_field_name": self.redirect_field_name,
"redirect_field_value": redirect_field_value})
return ret
login = LoginView.as_view()
그건 의미가 없습니다. 뷰는 컨텍스트 프로세서가 아니며 뷰입니다. 정확히 각 페이지에 무엇을 포함 시키길 원하십니까? –