# 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 注解来标识一个视图可以被跨域访问。那么对于基...