2017-08-17 28 views
0

在模板:如何在模板中存在对象时如何判断对象?

<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) 
+0

是否显示'data.news_one.title'而不是?或者什么也没有? – Hamish

+0

@Hamish什么都没显示。 – 244boy

+1

你能告诉我们'views.py'中的相关函数吗? – Hamish

回答

0

你误解了模板背景下是如何工作的。

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

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

哦,我的错误,我应该通过'{'data':data}' – 244boy

相关问题