2017-04-19 87 views
0

經過大量的研究,我仍然沒有找到如何去做:我的目的是能夠將鍵/值中的json分離出來,只顯示它看起來像什麼對我來說是必要的(例如標題,作者......)。這是一個Django網站。 那我這樣做:JSONField Django模板並沒有告訴我我去了什麼

在models.py

class Production(models.Model): 
    titre = models.CharField(max_length=255, blank=True) 
    publis = JSONField() 
    def __str__(self): 
     return '%s' % (self.titre) 
    class Meta: 
     db_table = 'Production' 

在Views.py

def post_json(request): 
    posts = Production.objects.all() 
    return render(request, 'appli/post_json.html', {'posts': posts}) 

*和模板:post_json.html *

這讓我完全的json數據

{% for post in posts %} 
    <div> 
     <p>aa = {{ post.publis }}</p> 
    </div> 
    {% endfor %} 

而這也正是我想只顯示作者

<h1>Publications lalala</h1> 
     {% for post in posts %} 
       aa = {{ post.publis }} 
      <p> Num : {{ aa.UT }}</p> 
      <p>Auteur : {{ aa.AU }} </p> 
     {% endfor %} 

我的網頁上顯示: enter image description here

預先感謝您的幫助(對不起,如果英語有錯我是法國人)

+0

「我的目的是希望能夠到我的JSON的鍵/值分開,只顯示它似乎需要我」:其實沒有什麼能像涉及到「JSON」對象 - 在運行時,'post.publis '是一個普通的Python字典,所以通常查找規則適用於您的模板(即:'post.publis.UT'將被解析爲'post.publis [「UT」]')。 –

回答

1

要在Django模板中使用post.publis中的密鑰,請使用常規的點查找,例如, {{ post.publis.UT }}

{% for post in posts %} 
    <p>Num : {{ post.publis.UT }}</p> 
    <p>Auteur : {{ post.publis.AU }} </p> 
{% endfor %} 

aa = {{ post.publis }}在你的模板不分配給post.publisaa。如果您想防止重複post.publis,則可以使用with標記。

{% for post in posts %} 
    {% with aa=post.publis %} 
    <p>Num : {{ aa.UT }}</p> 
    <p>Auteur : {{ aa.AU }} </p> 
    {% endwith %} 
{% endfor %} 
+0

「要訪問JSON字段中的鍵」:實際上在這一點上,它不是'JSONField',而是一個普通的python字典......(好吧,我認爲學究文,但至少在技術上是正確的 - 正如我們都知道的是「最好的一種正確的「) –

+1

@brunodesthuilliers因爲問題與字段類型無關,我已經從答案中刪除了對JSONField的提及。 – Alasdair

+0

非常感謝你!我曾嘗試類似的東西。然而,它以前沒有奏效。 –

相關問題