正如标题所述,我需要用户检索不同用户的用户信息,无论他们是否经过身份验证。
我有一个'配置文件'模板,其中包含一些逻辑,用于显示静态用户信息(对于公共用户)或可编辑的用户信息(对于它所属的用户)。
问题:我的模板中的条件返回“true” - User对象似乎已经过身份验证但是它不是。如果我从该页面(配置文件)导航,则没有用户登录。
我对Django很新。我没有在view.py中正确检索用户对象吗?
views.py
def GetProfileById(request, userid):
try:
user = User.objects.get(pk=userid)
except User.DoesNotExist:
return HttpResponseRedirect('/')
try:
user_profile = user.get_profile()
except Exception:
return HttpResponseRedirect('/')
context = {'user': user, 'user_profile': user_profile}
return render_to_response('profile.html', context, context_instance=RequestContext(request))
profile.html
{% if user.is_authenticated %}
<form id="form-about" class="form-horizontal" action="{% url update-user-profile %}" method="POST">
{% csrf_token %}
<p>{{ about_form.first_name }}</p>
<p>{{ about_form.last_name }}</p>
<p>{{ about_form.birthday }}</p>
<p>{{ about_form.profession }}</p>
<button class="btn btn-primary" type="submit">Save</button>
</form>
{% else %}
<p><b>Name:</b> {{ user.first_name }} {{ user.last_name }}</p>
<p><b>DOB:</b> {{ user_profile.birthday }}</p>
<p><b>Profession:</b> {{ user_profile.profession }}</p>
<p><b>Member since:</b> {{ user.date_joined|date:'Y-M-d' }}</p>
<p><b>Last login:</b> {{ user.last_login|date:'Y-M-d @ H:i' }}</p>
{% endif %}
答案 0 :(得分:3)
看起来,您要做的是,如果用户当前已登录,您希望显示一个表单,让他们更新个人资料。
所以问题是:
user
设置为数据库中的User对象。request.user
,它代表请求网页的用户的User对象。所以在你的模板中,改变:
{% if user.is_authenticated %}
为:
{% if request.user.is_authenticated %}
答案 1 :(得分:1)
我相信你会让user
和request.user
感到困惑。前者是正在显示的用户,后者是当前登录的用户,如果没有人登录则是AnonymousUser。
如果当前登录的用户和正在显示的用户相同,您想要显示该表单吗?然后改变
{% if user.is_authenticated %}
要
{% ifequal user request.user %}