未设置Django模板变量
标题说明了一切。两天前,以下代码工作正常,但现在未设置Django模板变量,django,django-templates,Django,Django Templates,标题说明了一切。两天前,以下代码工作正常,但现在旅程未设置或为空或 def map(request, jid): journeys = None if request.user.is_authenticated: journeys = Journey.objects.filter(user_id=request.user.id) #some stuff context = { 'jc': len(journeys), #only
旅程
未设置或为空或
def map(request, jid):
journeys = None
if request.user.is_authenticated:
journeys = Journey.objects.filter(user_id=request.user.id)
#some stuff
context = {
'jc': len(journeys), #only for testing
'journeys': journeys
}
return render(request, 'JourneyMap/map.html', context)
map.html扩展了base.html
insidebase.html:
<div class="dropdown-menu" aria-labelledby="dropdown05">
<p>{{ jc }}</p> <-- only for testing
{% for journey in journeys %}
{% if journey.user_id == user.user_id %}
{% if forloop.counter < 4 %}
<a class="dropdown-item"
href="{% url 'JourneyMap_journey' jid=journey.id %}">{{ journey.title }}</a>
{% endif %}
{% endif %}
{% endfor %}
</div>
{{jc}看起来旅程
长度是1,所以实际上设置了变量
我认为您的用户检查在这里失败
{%if-travely.user\u id==user.user\u id%}
什么是user.user\u id
?user
是否是存在于给定上下文之外的另一个变量?那可能还没定下来
否则,如果要检查当前用户的id,可能应该执行以下操作:
{%if-travely.user\u id==request.user.id%}
user
是请求的django捷径。user
。在上下文中使用request.user…
或自己设置用户不会改变任何东西。我还尝试输出user.user\u id
和travely-user\u id
,它们是相同的。此外,问题中显示的代码周围还有一个if user.is\u authenticated
。这意味着设置用户也是因为我可以输出id。当您在视图中通过身份验证用户进行筛选时,我看不到在模板中检查user
的原因travely.objects.filter(user\u id=request.user.id)
Yes,我还假设它是一个不同的用户
,而不是请求
中的django默认用户
@Matze,你试过从模板中删除支票吗?下拉列表又是空的吗?是的,我刚刚尝试过它,因为我意识到它是多余的,因为我已经通过view方法中的id对它进行了过滤。不幸的是,没有更改任何内容。您可以在模板中不输出{{jc}
,而是执行{{journies.count}
?还是1号吗?