2017-04-13 76 views
0

(我是Django的新手)Django模板变量不起作用

我遇到了Django模板的问题。

cruise_details过滤器应该只返回一行,但是当我尝试在模板中使用cruise_details.port显示它时,不显示任何内容。 “代码”正确地从URL传递。

如果我删除.port,只是把我跟此cruise_details在页面上

<QuerySet [<Cruise: B724>]> 

view.py

def cruise(request, code): 

return render(request, 'cruise.html', { 
     'cruise_details': Cruise.objects.filter(code=code) 
}) 

cruise.html

{{ cruise_details.port}} 

模型。 py

class Cruise(models.Model): 
code = models.CharField(max_length=10) 
destination = models.CharField(max_length=60) 
url = models.URLField 
ship = models.ForeignKey(Ship) 
duration = models.IntegerField 
start = models.DateField 
end = models.DateField 
added = models.DateTimeField(auto_now_add=True) 
modified = models.DateTimeField(auto_now=True) 
port = models.CharField(max_length=30) 

回答

2

的问题是,Cruise.objects.filter(code=code)返回一个列表,所以如果有很多可能的匹配,你可以修改你的模板,他们或者显示所有

{% for cruise_detail in cruise_details %} 
    {{ cruise_details.port }} 
{% endfor %} 

,如果你知道只能有那么一个结果,你可以请使用get代替:

Cruise.objects.get(code=code) 

和您现有的模板应该可以工作。

希望这会有所帮助。

+0

使用.get做到了!非常感谢 – user2844523