在 Django 的上下文处理器中设置自定义用户对象
Setting custom user object in context processor in django
我有一个自定义用户模型。成功登录后,我也在 HttpResponseRedirect 和模板中获得了匿名用户。如何获取登录用户?
登录视图:
class LoginFormView(View):
form_class = UserLoginForm
user_model = get_user_model()
template_name = 'account/login.html'
def get(self, request, *args, **kwargs):
form = self.form_class
return render(request, self.template_name, {'form':form})
def post(self, request, *args, **kwargs):
email = request.POST['email']
password = request.POST['password']
user = authenticate(email=email, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(reverse('home'))
else:
messages.error(request, 'Please enter correct email and password!')
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
如果您启用了 request template context processor,您将能够使用 {{ request.user}}
在模板中访问用户。
其次,确保您导入的是登录 function 而不是登录 view。应该是:
from django.contrib.auth import login
我有一个自定义用户模型。成功登录后,我也在 HttpResponseRedirect 和模板中获得了匿名用户。如何获取登录用户?
登录视图:
class LoginFormView(View):
form_class = UserLoginForm
user_model = get_user_model()
template_name = 'account/login.html'
def get(self, request, *args, **kwargs):
form = self.form_class
return render(request, self.template_name, {'form':form})
def post(self, request, *args, **kwargs):
email = request.POST['email']
password = request.POST['password']
user = authenticate(email=email, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(reverse('home'))
else:
messages.error(request, 'Please enter correct email and password!')
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
如果您启用了 request template context processor,您将能够使用 {{ request.user}}
在模板中访问用户。
其次,确保您导入的是登录 function 而不是登录 view。应该是:
from django.contrib.auth import login