有条件地在Django中扩展模板

eri*_*rip 3 python django django-templates

我在Django网站上有一个下载页面,我想同时为已登录和未登录的用户提供服务。我希望拥有一个单独的download.html,有条件地扩展正确的基础,而不是使用user_download.html和login_download.html。

但是,使用以下代码时出现错误。

{% if user.is_authenticated %}
  {% extends 'user_base.html' %}
{% else %}
  {% extends 'login_base.html' %}
{% endif %}

{% block content %}
<h2>Downloadable content</h2> 
...
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我收到的错误是/ download /处的TemplateSyntaxError

无效的标签:“ else”

其他怎么了?我试过了

{% if user.is_authenticated %}
  {% extends 'user_base.html' %}
{% else %}{% if AnonymousUser.is_authenticated %}
  {% extends 'login_base.html' %}
{% endif %}{% endif %}

{% block content %}
<h2>Downloadable content</h2> 
...
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但这也不起作用。

谢谢,erip

Mar*_*mro 5

{% extends %}标签支持的变量。请参阅文档以供参考。

def my_view(request):
   if request.user.is_authenicated
       base_template_name = 'user_base.html'
   else:
       base_template_name = 'login_base.html'

   # Pass base template name to the renderer
   return render_to_response('your_template.html', {'base_template_name':base_template_name})
Run Code Online (Sandbox Code Playgroud)

模板(请注意,该值未加引号):

{% extends base_template_name %}
...
Run Code Online (Sandbox Code Playgroud)