pdx*_*ile 3 django django-templates django-authentication django-registration
我知道我们可以在模板中使用“扩展变量”在两个不同的扩展模板之间切换。例如
views:
if something:
base = 'base1.html'
else:
base = 'base2.html'
return render_to_response ('template.html', {'base':base})
template.html:
{% extends base %}
Run Code Online (Sandbox Code Playgroud)
通常情况下效果很好。但是,我的问题是我正在使用 django-registration,我不必编写自己的视图来处理注册和登录过程。这也意味着我无法将变量传递给模板。虽然我的项目目录下确实有注册模板。(如login.html)
不幸的是,Django 无法在模板中执行此操作:
{% if something %}
{% extends 'base1.html' %}
{% else %}
{% extends 'base2.html' %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我知道“变量基数”可以传递给身份验证登录的唯一方法是编写我自己的视图,例如登录、注销等。这似乎不适合 DRY 模型,而且今后很容易出错。
还有其他方法可以实现此目的吗?或者有任何解决问题的建议吗?
谢谢。
-P
小智 5
如果只有 2(或 3)个选项可以将“某物”转换为布尔值,那么您可以使用 yesno 过滤器: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#是的,没有
所以:
{% extends something|yesno:"base1.html,base2.html" %}
Run Code Online (Sandbox Code Playgroud)
如果您想要更自由的形式,那么您可以使用上面提到的额外上下文/自定义上下文处理器选项,并尝试如下操作:
{% extends selected_template|default:"base2.html" %}
Run Code Online (Sandbox Code Playgroud)
其中选定的模板只是您喜欢的任何基本模板的路径。
| 归档时间: |
|
| 查看次数: |
2728 次 |
| 最近记录: |