首页 > 解决方案 > Django 'string_if_invalid' 非默认行为

问题描述

在模板中,我根据给定变量是否存在(然后我在表单中编辑它)或不存在(然后我显示一个表单来为其创建新值)使用某些输出格式,如下所示:

<!-- formatted for readability: -->
<form action="
     {% if instance %}
          {% url 'app:submit_updated_instance' instance.id %}
     {% else %}
          {% url 'app:submit_new_instance' %}
     {% endif %}" 
 method="post"> .... </form>

instance不存在时,我的记录器将长异常跟踪打印到控制台。

根据文档string_if_invalid的默认值为"",因此任何源自模板标签的异常都不应打印到日志中。

我梳理string_if_invalid了 SO 中的每个相关问题,但没有一个答案对我有用。

在我的情况下,什么可能导致与默认行为相反的行为,我该如何解决?

谢谢!


示例异常跟踪:

[DEBUG] Exception while resolving variable 'instance' in template 'app/instances_form.html'.
Traceback (most recent call last):
  File "/home/username/.local/lib/python2.7/site-packages/django/template/base.py", line 903, in _resolve_lookup
    (bit, current))  # missing attribute
VariableDoesNotExist: Failed lookup for key [instance] in u'[{\'False\': False, \'None\': None, \'True\': True}, {u\'csrf_token\'.......  # very long object printed here

标签: pythondjangodjango-templates

解决方案


我有同样的问题。似乎没有设置默认值。如果我将密钥设置为无,则错误得到解决。


推荐阅读