2017-08-17 6 views
0

テンプレート内にオブジェクトが存在するかどうかを判断するにはどうすればよいですか?テンプレートで

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

私はviews.pyで、私はそれをプリントアウト持っているのでdata.wine_oneは、存在しているお約束します。

テンプレートではdata.wine_one.titleが表示されず、data.wine_one != Noneもそれを判断できません。 views.py


EDIT

:テンプレートコンテキストがどのように機能するか

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

@ハミッシュは何も示していません。 – 244boy

+1

'views.py'の関連する機能は何を表示できますか? – Hamish

答えて

0

あなたが誤解しました。

テンプレートにdataという要素はありません。これは、ビュー内でコンテキストを構築するために使用しているローカル変数です。テンプレートでは、そのオブジェクトのキーを直接参照するだけです。だから、次のようになります。

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

ああ、間違いですが、私は '{'data':data}'を渡すべきです – 244boy

関連する問題