Django'string_if_invalid'非默认行为

时间:2019-12-09 13:43:36

标签: python django django-templates

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

<!-- 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不存在时,我的记录器会打印出很长的异常跟踪记录到控制台。

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

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

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

谢谢!


示例异常跟踪:

[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

1 个答案:

答案 0 :(得分:0)

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