# urls.py
path('book_list/', views.BookListView.as_view()),
path('login/', views.login, name='login'),
# views.py
def my_decorator(func):
def wrapper(request, *args, **kwargs):
if request.GET.get('username'):
return func(request, *args, **kwargs)
else:
return redirect(reverse('login'))
return wrapper
@method_decorator(my_decorator, name='dispatch')
class BookListView(ListView):
model = Book
template_name = 'book_list.html'
context_object_name = 'books'
paginate_by = 10
ordering = 'id'
page_kwarg = 'page'
def get_context_data(self, **kwargs):
context = super(BookListView, self).get_context_data(**kwargs)
context['user'] = 'Yakult'
print(context)
return context
def get_queryset(self):
return Book.objects.filter(id__lte=20)
直接访问 [http://127.0.0.1:8000/CBV/book_list/](http://127.0.0.1:8000/CBV/book_list/) 会重定向到login界面
如果[http://127.0.0.1:8000/CBV/book_list/?username=1](http://127.0.0.1:8000/CBV/book_list/?username=1) get请求中带有username参数就可以访问成功
Django给类视图添加装饰器
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 类视图使用装饰器:为类视图添加装饰器,可以使用两种方法。为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设...
- 关于Django的视图系统 【定义】:一个视图函数(或类),简称为视图,是一个简单的python函数或类,它接受w...
- 在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问。那么对于基...