我正在尝试显示我的用户信息,但是我得到了匿名用户作为我的输出;Anonymous User
我在views.py中的代码如下;
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/account')
else:
form = RegistrationForm()
args = {'form' : form}
return render(request, 'accounts/register.html', args)
def view_profile(request):
args = {'user': request.user}
return render (request, 'accounts/profile.html',args)
我正在重写UserCreationForm,我在forms.py中的代码是;
class RegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = {
'username',
'first_name',
'last_name',
'email',
'password1',
'password2'
}
def save(self,commit=True):
user = super(RegistrationForm,self).save(commit=False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
我想要显示配置文件信息的profile.html是;
{% block head %}
<title> User Profile </title>
{% endblock %}
{% block body %}
<div class="container">
<p>
<h1> {{user}}</h1>
<h3>First Name: {{user.first_name}}</h3>
<h3>Last Name: {{user.last_name}}</h3>
<h3>Email: {{user.email}}</h3>
</p>
</div>
{% endblock %}
真的不知道我在哪里出错了,非常感谢任何帮助。
发布于 2018-02-11 04:11:52
你必须用@login_required来装饰你的def view_profile(request):
,否则Django也会为匿名用户服务这个请求。
还要注意,如果您有(或添加) django.core.context_processors.request
到您的settings.TEMPLATE_CONTEXT_PROCESSORS
(或settings.TEMPLATES['OPTIONS']['context_processors']
,取决于您的django版本),您可以在模板中使用{{request.user}}
,而无需在上下文中创建特定条目。
https://stackoverflow.com/questions/48725001
复制相似问题