首页 > 解决方案 > 在模板中自动将 None 呈现为 null?

问题描述

我正在渲染一个message捆绑在context. 有时message会是None

def context_test(request):
    context = {
      'message': None,
    }
    return render(request, 'testapp/context_test.html', context)

我只想在不是时才在前端提醒消息None。到目前为止,我这样做是这样的:

<!DOCTYPE HTML>
<html>

<head>
</head>

<body>
</body>
<script>
    let message = "{{ message }}";
    {% if message %}
    alert(message);
    {% endif %}
</script>

</html>

但是,我想if用纯 Javascript 替换 Django 的子句,如下所示:

<!DOCTYPE HTML>
<html>

<head>
    <style>

    </style>
</head>

<body>
</body>
<script>
    let message = "{{ message }}";  // or {{ message }} ?
    if (message) {
        alert(message);
    }
</script>

</html>

为了使它起作用,我需要在脚本中message等于null(或其他虚假值)。

是否可以以一种干净的方式完成,而无需在脚本中进行额外的转换,例如if {message === 'None'} message = null?换句话说,我可以以某种方式告诉 Django 自动呈现模板中的None上下文吗?null

标签: pythondjango

解决方案


您可以使用default_if_none让 None 看起来更像 JavaScript。

let message = '{{ message|default_if_none: "false" }}';
if (message != 'false') {
    alert(message);
}

推荐阅读