对于 Django 1.9 或更高版本;基于类的视图 (CBV) 可以利用mixin
auth 包中的。只需使用以下语句导入 -
from django.contrib.auth.mixins import LoginRequiredMixin
mixin 是一种特殊的多重继承。使用mixin主要有两种情况:
- 你想为一个类提供很多可选特性。
- 你想在很多不同的类中使用一个特定的特性。
了解更多:什么是 mixin,它们为什么有用?
使用 login_required 装饰器的 CBV
网址.py
from django.conf.urls import url
from django.contrib.auth.decorators import login_required
from .views import ListSecretCodes
urlpatterns = [
url(r'^secret/$', login_required(ListSecretCodes.as_view()), name='secret'),
]
视图.py
from vanilla import ListView
class ListSecretCodes(LoginRequiredMixin, ListView):
model = SecretCode
使用 LoginRequiredMixin 的 CBV
网址.py
from django.conf.urls import url
from .views import ListSecretCodes
urlpatterns = [
url(r'^secret/$', ListSecretCodes.as_view(), name='secret'),
]
视图.py
from django.contrib.auth.mixins import LoginRequiredMixin
from vanilla import ListView
class ListSecretCodes(LoginRequiredMixin, ListView):
model = SecretCode
笔记
上面的示例代码使用django-vanilla轻松创建基于类的视图 (CBV)。通过使用 Django 的内置 CBV 和一些额外的代码行,可以实现相同的目的。