我在一个非Django项目中使用Django模板,我想确保我的模板不包含对不在上下文中的变量的引用,为此,我需要Django模板渲染器在上下文中没有non_existent_variable时看到{{ non_existent_variable }}时引发错误.

可以将TEMPLATE_STRING_IF_INVALID设置为某个值,然后我们可以判断该值是否不在呈现的模板中,但这一点也不优雅.

我可以在不做太多工作的情况下,以某种方式覆盖上下文接受丢失的关键错误的方式吗?

推荐答案

有一个Django Snippet,它提供了一个解决方案:

# settings.py
class InvalidVarException(object):
    def __mod__(self, missing):
        try:
            missing_str=unicode(missing)
        except:
            missing_str='Failed to create string representation'
        raise Exception('Unknown template variable %r %s' % (missing, missing_str))
    def __contains__(self, search):
        if search=='%s':
            return True
        return False

TEMPLATE_DEBUG=True
TEMPLATE_STRING_IF_INVALID = InvalidVarException()

Django相关问答推荐

使用Django ORM在不相关的模型之间进行左外连接?

DRF中是否有有效的更新有序数据的算法?

创建用户/将用户登录到客户端服务器的标准OAuth/OIDC流程是什么?

Django为什么我的post.count_view递增2?

Django:添加第二个';详细';用于检索额外信息的视图

错误``Forbidden (403) CSRF 验证失败.请求中止.``` 当try 登录管理员时

错误404除主要应用程序外,HTML页面无法渲染的其他应用程序

DjangoRestFramework 解析错误:"多部分表单解析错误多部分中的无效边界:None"

无法迁移,模型中的外键导致了问题

Django判断字段是否为空?

将网络测功机添加到 Heroku django 应用程序时如何克服Coudn't find that formation错误?

如何在 Django 中向 ModelForm 添加外键字段?

is_valid() vs clean() Django 表单

如何在 Django 中触发 500 错误?

django 静态文件版本控制

Django模板转换为字符串

AWS Cognito 作为网站的 Django 身份验证后端

如何获取 pytz 时区的通用名称

Django REST 框架中的每个字段权限

ValueError: 无法解析相关模型 u'app.model'