Pau*_*975 28 python django django-templates
我对django很新,但是在java世界中有多年的编码经验,所以我觉得这个问题很荒谬 - 我确信答案是显而易见的,我只是错过了它.我似乎无法找到正确的方式在谷歌或其他东西中查询...我已经搜索了django文档,它要么不存在,要么我只是没有看到它.我想要做的就是在模板测试中,如果var不是null或者是一个空字符串,或者只是一堆空格.我有一个问题,空间被引入我的领域 - 我必须要做的另一个问题,并且会解决......但是,我希望我的逻辑无论如何都能工作.现在,因为我的字符串只包含空格只是这样做:{%if lesson.assignment%}总是通过,即使我不想要它.我找了一个可以在{%%}之间工作的修剪类型功能,但我似乎找不到任何东西.我尝试过strip,但它在{%%}之间不起作用.有人可以指点我的答案方向......我可能错过了一些文件......某些东西?
非常感谢提前!
Sha*_*hin 54
{% if lesson.assignment and lesson.assignment.strip %}
Run Code Online (Sandbox Code Playgroud)
该.strip电话str.strip()使您可以处理的空白,仅字符串作为空,而前面的检查使我们剔除None第一(这不会有.strip()方法)
证明它有效(in ./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'
Run Code Online (Sandbox Code Playgroud)
如果lesson.assignment是模型字段,您可以在模型中定义辅助函数并使用它:
class Lesson(models.Model):
assignment = models.CharField(..., null=True, ...)
# ...
@property
def has_assignment(self):
return self.assignment is not None and self.assignment.strip() != ""
Run Code Online (Sandbox Code Playgroud)
然后{% if lesson.has_assignment %}在您的模板中使用.
小智 5
当问题发布时,这可能不可用,但一个选项可能是使用内置模板过滤器default_if_none(Django文档链接).
例如:
{{ lesson.assignment|default_if_none:"Empty" }}
| 归档时间: |
|
| 查看次数: |
34890 次 |
| 最近记录: |