如何根据 Django 中的用户身份验证更改模板
How to change template based on user authentication in django
如果用户成功登录,我需要显示一个模板。如果用户未登录,我需要显示另一个模板。
我创建了两个模板,一个是 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 %}
如果您的模板失效,我建议您在 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 %}
Note: if function of render
still doesn't work well, please try with render_to_response
such as this answer:
如果用户成功登录,我需要显示一个模板。如果用户未登录,我需要显示另一个模板。
我创建了两个模板,一个是 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 %}
如果您的模板失效,我建议您在 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 %}
Note: if function of
render
still doesn't work well, please try withrender_to_response
such as this answer: