[英]Python Django Templates and testing if a variable is null or empty string
我是 django 的新手,但在 java 世界中有多年的編碼經驗,所以我覺得問這個問題很荒謬——我確信答案很明顯,我只是想念它。 我似乎找不到在谷歌或其他東西中查詢這個的正確方法......我已經搜索了 django 文檔,它要么不存在,要么我只是沒有看到它。 如果 var 不是 null 或空字符串或只是一堆空格,我只想在模板測試中進行測試。 我有一個問題,空間被引入我的領域 - 另一個我必須並且將會解決的問題......但是,我希望我的邏輯無論如何都能起作用。 現在,因為我的字符串只包含空格,所以只需這樣做:{% if lesson.assignment %} 總是通過,即使我不希望它通過。 我一直在尋找可以在 {% %} 之間工作的修剪類型功能,但我似乎找不到任何東西。 我試過 strip,但它在 {% %} 之間不起作用。 有人可以指出答案的方向嗎……我可能錯過了一些文檔……什么?
提前致謝!
{% if lesson.assignment and lesson.assignment.strip %}
.strip
調用str.strip()
以便您可以將純空格字符串處理為空,而前面的檢查確保我們首先清除None
(它不會有.strip()
方法)
證明它有效(在./manage.py shell
):
>>> import django
>>> from django.template import Template, Context
>>> t = Template("{% if x and x.strip %}OK{% else %}Empty{% endif %}")
>>> t.render(Context({"x": "ola"}))
u'OK'
>>> t.render(Context({"x": " "}))
u'Empty'
>>> t.render(Context({"x": ""}))
u'Empty'
>>> t.render(Context({"x": None}))
u'Empty'
發布問題時這可能不可用,但一個選項可能是使用內置模板過濾器default_if_none
( Django 文檔鏈接)。
例如: {{ lesson.assignment|default_if_none:"Empty" }}
如果lesson.assignment
是 model 字段,您可以在 model 中定義一個助手 function 並使用它:
class Lesson(models.Model):
assignment = models.CharField(..., null=True, ...)
# ...
@property
def has_assignment(self):
return self.assignment is not None and self.assignment.strip() != ""
然后在您的模板中使用{% if lesson.has_assignment %}
。
您可以通過使用cut
過濾器刪除所有空格來模擬它。 但是您可能應該首先找出為什么它包含所有空格。
這是一個簡單的方法,來自 Django 版本 3.2
{{ lesson.assignment|default:"nothing" }}
這適用於兩種情況(空字符串和無對象)。
參考鏈接: https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#std:templatefilter-default
您可以在 Django 模板變量中的任何位置調用任何內置方法。 例如,您可以調用 Python 字符串方法strip
。 所以這將起作用:
{% if lesson.assignment.strip %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.