Django 1.9 hoặc sử dụng dấu ngoặc nhọn django
Django 1.9 đã giới thiệu một LoginRequiredMixin được sử dụng như vậy:
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
Nếu bạn đang sử dụng phiên bản django cũ hơn, bạn có thể sử dụng khá nhiều bản mixin tương tự từ django-niềng - phiên bản Django dựa trên phiên bản django-niềng. django -ces 1.4.x vẫn hỗ trợ Django 1.4 nên các bạn có thể sử dụng với các phiên bản khá cũ.
Phương pháp cũ hơn
Tôi đã tìm thấy câu hỏi này khi tìm kiếm trên Google về cách trang trí các khung nhìn dựa trên lớp học, vì vậy, để thêm câu trả lời cho điều đó:
Điều này được đề cập trong phần tài liệu về cách trang trí các khung nhìn dựa trên lớp . Có urls.py
trình bao bọc, hoặc bạn có thể áp dụng trình trang trí cho dispatch()
phương thức. Ví dụ từ tài liệu:
Trang trí trong conf URL
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())),
)
Trang trí lớp học
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)
Xem tài liệu được liên kết ở trên để biết thêm chi tiết.