如何在django中基于用户身份验证更改模板

时间:2017-02-16 07:50:37

标签: django authentication if-statement user-controls

如果用户成功登录,我需要显示一个模板。如果用户没有登录我需要显示另一个模板。

我创建了两个模板,一个是base.html,另一个是base_login.html模板。

如果用户成功登录,我需要致电base_login.html其他明智的base.html。我正在使用以下来实现这一目标。它没有给出预期的结果。怎么做到这一点?

{% if user.is_authenticated %}
        <p>Welcome {{ user.username }} !!!</p> 
        {% extends "base_login.html" %} 
{% else %}
        {% extends "base.html" %} 
{% endif %}

1 个答案:

答案 0 :(得分:1)

如果您的模板无效,我建议您使用views.py,例如:

from django.shortcuts import render, render_to_response

def homepage(request):
    template_name = 'homepage.html'
    extended_template = 'base_login.html'

    if request.user.is_authenticated():
        extended_template = 'base.html'

    return render(
        request, template_name, 
        {'extended_template': extended_template, ...}
    )

# homepage.html
{% extends extended_template %}

{% block content %}
  {% if request.user.is_authenticated %}
    Hello {{ request.user }}
  {% endif %}
{% endif %}
  

注意:如果render的功能仍然效果不佳,请尝试render_to_response,例如此答案:https://stackoverflow.com/a/1331183/6396981