[英]how can i authenticate logged in user in django generic views?
您好Stack Overflow社区,我已经在django 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.