如何使用默认Django auth登录视图

时间:2018-02-25 10:59:16

标签: python django login decorator

我正在使用默认的Django身份验证系统。在我的网址中,我有:

urlpatterns = [
    ...
    path('', include('django.contrib.auth.urls')),
    ...
]

现在我有一个自定义装饰器,我想在登录视图中应用,类似于我在注册时应用它的方式。

@example_decorator
def signup(request):
     ...

但问题是我使用默认的登录视图。 有没有办法将此装饰器应用于默认的Auth View?

我认为我需要扩展默认视图,但我找不到任何示例。怎么办呢?

2 个答案:

答案 0 :(得分:3)

您可以在include之前插入装饰视图,并获得所需的行为。

from django.contrib.auth import auth_views

from your_app import example_decorator

urlpatterns = [
    ...
    path('login/', example_decorator(auth_views.LoginView.as_view()), name='login'),
    path('', include('django.contrib.auth.urls')),
    ...
]

答案 1 :(得分:0)

如果默认登录视图是指登录系统,登录功能;你可以用它简单地装饰它:

from django.contrib.auth import login

def decorator(f):
    pass

login = decorator(login)

def my_view(request):
    login()

否则如果您正在谈论clasview只是评论,所以我也可以解释它。

-------基于类的视图--------

from django.contrib.auth.views import LoginView
from django.utils.decorators import method_decorator

def decorator(f):
    #your decorator

@method_decorator(decorator, name='dispatch')
class MyClass(LoginView):
    pass

docs而言,这应该可以解决问题;虽然你必须自己写这个网址,但你不能简单地包括我害怕的auth.urls。希望这可以帮助。