【发布时间】:2013-01-10 07:40:03
【问题描述】:
我有一个页面,用户可以在其中将自己的模板提交到 textarea 中,现在它需要这么简单。但是,由于它是用户生成的输入,我需要验证他们没有做破坏我的应用程序其余部分的事情,同时如果他们做错了什么,就他们做错了什么提供有用的反馈。
为了提供有用的反馈,我想要一些类似的东西来看看 django 为我提供了什么(使用 django 1.4):
尤其是上面那一点。我将用户模板放在 django 模板中,所以我不必自己验证语法错误和东西。看起来像这样:
try:
template = get_template_from_string(user_input)
template.render(context=Context())
except:
do something to ouptut the error
需要渲染调用,否则根本不会抛出异常。
我已尝试打印异常及其参数,但这只能提供非常有限的信息。我也尝试使用回溯,但它从不返回行号或模板中的任何内容,只返回 python 代码中引发异常的位置。我也无法使用 Google 找到任何东西,而且我通过 Django 源代码进行的搜索让我想知道实际的错误页面是在哪里生成的......
所以基本上我的问题是;我如何获得图像中显示的信息?
编辑 澄清一下:我希望用户能够制作模板,以便在发送电子邮件时可以使用这些模板。由于 Django 模板引擎已经存在,我想我会使用它而不是其他东西。
使用thissn-p 和我自己对变量的一些解析使模板本身变得安全。到目前为止一切正常,除了对用户有用的调试消息。到目前为止,我得到的只是:“解析模板时出现问题,意外的块标签扩展”(例如),我希望它更像上面显示的图像。
【问题讨论】:
-
你能详细说明你为什么这样做吗?可能存在不涉及用户提交 django 模板的解决方案。
-
是的,它是用于电子邮件模板,用户需要能够上传自己的模板,包括变量等。所以我想既然我们使用了 Django,为什么不使用 Django 渲染引擎呢。
标签: python django templates exception traceback