2013-03-14 83 views

回答

5

有幾件事情就明白了:

  1. Django的模板語言是不是真的圍繞「實」的編程設計。它的核心是建立字符串。
  2. 它不支持真正的「表達式」。
  3. ...但它支持基本條件和循環。
  4. 所以,雖然你可以檢查一個值是否等於或大於或小於另一個值,但你不能做的比這更多。
  5. 除非您使用過濾器或自定義模板標記。
  6. 過濾器可以將值從一個事物轉換爲另一個事物。
  7. 模板標籤可以做更復雜的事情,這超出了這個問題的範圍。
  8. 雖然過濾器或自定義模板標籤可能會到達您想要去的地方,但它們會過度殺傷。

所以,在我看來,要做到這一點最簡單的方法是:

  1. 在你看來,計算當前日期的日子。
  2. 將該值傳遞給您的模板。
  3. 做一個簡單的「如果大於」檢查的值傳遞的對數10

因此,我們的觀點看起來是這樣的:

def sample_view(request, *args, **kwargs): 
    from datetime import date 
    current_date = date.today() 
    current_day = int(current_date.day) # force a cast to an int, just to be explicit 
    return render_to_response("template", {'day_of_the_month': current_day }) 

而在我們的模板中,我們會更多信息:

{% if day_of_the_month > 10 %} 
    <!-- Stuff to show after the 10th --> 
{% else %} 
    <!-- Stuff to show before the 10th --> 
{% endif %} 

這不暴露的東西到您的模板你可以根據日期出於安全原因被隱藏。 您不應該根據if/then檢查來隱藏模板中的安全事物。

如果您需要進行額外的支票,您可以傳入current_date,並在數字10中檢查current_date.day,而不是在當天特意通過。它不太明確,但更通用,更靈活。

+0

嗨,我已經在模板中使用變量day_of_the_month,但它給了我像2013年3月14日的值,但我只需要只有14天的值,我該如何過濾 – user2106353 2013-03-14 09:08:34

+0

請確保您已通過current_day而不是current_date。 – 2013-03-14 09:24:52

+0

對不起,親愛的,你是對的,我已經通過了錯誤的變量,但它現在好好感謝很多 – user2106353 2013-03-14 09:33:23