我正在设计一个自定义的django过滤器,只是为了确保它能正常工作,我有类似的东西
{{ "Sleeps:"|translate:"fr" }}
它有效。
现在在最终实现中,我希望它获取cookie或使用默认值
{{ pg.title|translate:request.COOKIES.lang|default:"en" }}
我收到此错误
VariableDoesNotExist at /chalet/belle-chery
Failed lookup for key [lang] in {'_ga': 'GA1.1.1026479868.1547798010', 'cookie-policy': 'true', 'csrftoken': 'VrVrvgZUfFrWhFDFjLIvZgOus9NrmjDx1JwNP2lzvz2FRAGmC1lLrKwiH4g31X5F', 'sessionid': 'ptp6smvt9w95qtqlkc7klx736u5k7uu5'}
因此它没有实现默认部分。
因此,我认为有一种方法可以解决此问题,或者使用中间件来设置cookie(如果未设置)。
如果不需要中间件,那就太好了。
答案 0 :(得分:0)
因此它没有实现默认部分。
确实如此,它将|default:"en"
过滤器应用于{{ pg.title|translate:request.COOKIES.lang }}
的结果,而不是request.COOKIES.lang
表达式。
解决此问题的最简单方法可能是定义局部变量,例如使用{% with ... %}
模板标签:
{% with lang=request.COOKIES.lang|default:"en" %}
{{ pg.title|translate:lang }}
{% endwith %}