如果模板中存在对象,如何判断对象?

时间:2017-08-17 09:44:48

标签: django django-templates

在模板中:

    <h4>
        {% if data.wine_one %}
            {{ data.wine_one.title }}
        {% elif data.news_one  %}
            {{ data.news_one.title }}
        {% endif %}
    </h4>

我保证data.wine_one存在,因为在views.py我打印出来了。

但是在模板中它没有显示data.wine_one.title,我使用data.wine_one != None也无法判断它。

修改

views.py

def getData():

    banner = models.Banner.objects.filter(fk_info=1)
    info = models.Info.objects.all().first()
    aboutus = models.AboutUs.objects.all().first()
    winery = models.Winery.objects.all()[:3]
    winery_consult = models.WineryConsult.objects.all()[:4]

    data = {

        'banner': banner,
        'info': info,
        'aboutus': aboutus,
        'winery': winery,
        'winery_consult': winery_consult,
    }

    return data    

def productdetails(request, nid):

    data = getData()

    wine_one = models.Winery.objects.filter(id=nid).first()

    data['wine_one'] = wine_one

    print (data['wine_one'].title)  # there ouput the "gaoliangjiu"

    return render(request, 'article_list_content.html', data)

1 个答案:

答案 0 :(得分:0)

您误解了模板上下文的工作原理。

模板中没有名为data的元素;这只是您在视图中用于构建上下文的局部变量。在模板中,您只需直接引用该对象的键。所以它应该是:

    {% if wine_one %}
        {{ wine_one.title }}
    {% elif news_one %}
        {{ news_one.title }}
    {% endif %}