2010-10-12 41 views
0

例如,如果我有一個模板下面的模型,視圖和代碼...如何在django-template中只顯示特定的變量信息?

class news(models.Model): 
    type = models.ForeignKey(----) (charfield) 
    title = models.CharField(max_length=100) 
    published = models.DateTimeField(default=datetime.now) 
    summary = models.CharField(max_length=200) 

def ----(): 
    items = news.objects.all().order_by('-published')[:5] 
    return {'items': items} 

{% if items %} 
<ul> 
{% for item in items|slice:":2" %} 
<li>{{ item.title }}</li> 
<li>{{ item.summary }}</li> 
{% endfor %} 
<ul> 
{% endif %} 

你會如何顯示的項目只有一個特定類型。使用上面的模板代碼。

例如顯示只有type = Worldnews的所有項目。

我知道這通常是在視圖中實現,但我想知道這是如何在模板內實現的。

非常感謝所有幫助。

回答

1

試圖在模板中實現它是一個非常糟糕的主意。這也是不可能的。

模板的整體思想是將邏輯與表示分開。 Django創作者設計的模板只能用於非常簡單的演示,因爲據我所知這是不可能的。

編輯:這不是真的不可能,但不完全容易,不是一個很好的主意。查看評論。

+0

這不是不可能*,因爲您可以使用自定義模板標籤或過濾器來做到這一點。但是你說這是個不好的主意。 – 2010-10-12 18:03:44

+0

哦,我沒有想到這一點。 – 2010-10-12 19:07:51

+0

然而,你是對的,這是一個壞主意,如果需要的話,自定義模板標籤看起來是最好的方法。但我認爲將功能從視圖和模板中拿出來有點讓django失去了意義,但我仍然很想知道。謝謝。 – Stu 2010-10-13 10:38:52

-1
news.objects.get(type__exact="Worldnews") 

編輯:使用上述的類型,你需要該視圖。

+0

OP特意問他是否想在模板中做到這一點。 – 2010-10-12 18:01:19

+0

@丹尼爾 - 不要鼓勵不良行爲。 – 2010-10-12 18:07:02

0

我缺少的東西,這似乎很容易:

{% if items %} 
<ul> 
{% for item in items %} 
    {% ifequal item.type "Worldnews" %} 
     <li>{{ item.title }}</li> 
     <li>{{ item.summary }}</li> 
    {% endifequal %} 
{% endfor %} 
<ul> 
{% endif %} 

正如其他人所說,這是更好的查看功能來完成。

+0

也許我是缺少什麼東西?這似乎不工作? – Stu 2010-10-13 10:57:46

+0

當你發現自己說某件事不起作用時,你應該總是*描述它正在做什麼,這樣別人可以幫助你。 – 2010-10-13 11:56:05

相關問題