我有一个使用身份验证的django应用程序,用户可以查看彼此的个人资料。
在我的views.py
中def display(request, edit=False, pk=None):
if not pk:
pk = request.user.profile.pk
profile = Profile.objects.get(pk=pk)
d = get_user_info(profile) # returns a dictionary of some info from a user's profile
if edit and request.user == profile.user:
return render(request, 'edit_profile.html', d)
else:
return render(request, 'profile.html', d)
在我的模板中,我想为用户提供点击链接的选项,允许他们在查看自己的个人资料时编辑信息。
{% if request.user == profile.user %}
<a href="{% url "edit_profile" %}">edit</a>
{% endif %}
我有两个问题。
第一:我认为使用render()允许我访问模板内的request
。但是,这不起作用。我做错了吗?或者我是否需要使用字典显式传递render
?
d['request']=request
return render(request, 'profile.html', d)
第二:这可以吗?或者我应该以其他方式这样做吗?
答案 0 :(得分:3)
Django有一个request context processor,可以在模板上下文中添加request
个对象。
默认情况下不会添加此项,因此您需要在TEMPLATE_CONTEXT_PROCESSORS
设置中启用它。
但是,django将当前request.user
添加为user
上下文变量,因此如果这足够,您可以使用它。