0

我在模型类中有一些自定义函数来处理一些数据,然后将自定义属性添加到模型中。问题是,如果在生成模板时有任何异常,我不知道如何引发异常(错误似乎只是无声的,因此它将进一步处理模板但给出 NO ERROR )在视图中

test.objects.all()
render_to_string('template.html', {'test': test})

在模板中

{{ entry.state }}

在模型中:

@property
def state(self):
    somedict = {'a': 111}
    try:
       print somedict['b']
    except Exception as e:
       FATAL_ERROR

我应该用什么代替 fatal_error 以便模板处理立即停止,或者给渲染函数一些异常?谢谢

4

3 回答 3

0

根据文档

如果变量在调用时引发异常,则会传播该异常,除非该异常attribute silent_variable_failure的值为True. 如果异常确实具有silent_variable_failure值为 的属性,则True该变量将呈现为空字符串。

还有这个例子:

t = Template("My name is {{ person.first_name }}.")
class PersonClass3:
    def first_name(self):
        raise AssertionError("foo")
p = PersonClass3()
t.render(Context({"person": p}))
#Error raised


class SilentAssertionError(Exception):
    silent_variable_failure = True

class PersonClass4:
    def first_name(self):
        raise SilentAssertionError
p = PersonClass4()
t.render(Context({"person": p}))
"My name is ."
#No error raised
于 2013-09-17T08:11:37.703 回答
0

您可以设置TEMPLATE_DEBUGTrue.

于 2013-09-16T11:05:20.370 回答
0

我遇到了和你类似的问题。但让我感到困惑的问题是,为什么当我没有捕捉到异常时根本不会引发异常。

似乎它只是在触摸模型实例时发生(例如 getattr(model, not_exists_attribute))。

于 2014-01-01T16:22:48.980 回答