Hello to 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'
答案 0 :(得分:1)
在您的视图中使用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'
答案 1 :(得分:1)
在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'
编辑: 我无法发表评论,因此在此添加: 您可以在自己的views方法中通过request.user处理用户实例。