繁体   English   中英

如何在Django通用视图中对登录的用户进行身份验证?

[英]how can i authenticate logged in user in django generic views?

您好Stack Overflow社区,我已经在django views.py中创建了登录和注销功能,因此我也成功实现了登录和注销方法,但是我感到困惑,我该如何将已登录用户详细信息的数据传递给基于类的视图在views.py中,因为我只想在用户登录时才授予对基于类的视图的访问权限

views.py

def admin_login(request):
    context = {}
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user:
            login(request, user)
            context['user'] = request.user
            return redirect('profile')
        else:
            context['error'] = 'Provide Valid Credentials'
            return render(request, "secret_template.html", context)
    else:
        return render(request, "secret_template.html", context)


def admin_logout(request):
        logout(request)
        return redirect('secretview')

我仅在用户登录后才想在视图下方进行身份验证

class index(TemplateView):
    template_name = 'secret_template.html'

在您的视图中使用LoginRequiredMixin

from django.contrib.auth.mixins import LoginRequiredMixin

class index(LoginRequiredMixin, TemplateView):
    login_url = reverse_lazy('admin_login') # or whatever
    template_name = 'aapp/index.html'

在Django文档之后,您将找到一些适合您要求的通用示例:对于基于函数的视图,您可以简单地使用login_required装饰器。

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    return Something

对于基于类的视图,您可以使用method_decorator的示例

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

@method_decorator(login_required, name='dispatch')
class ProtectedView(TemplateView):
template_name = 'secret.html'

编辑:我无法评论,所以我在这里添加:您可以在视图方法中处理来自request.user的用户实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM