2017-02-16 72 views
0

如果用户成功登录,我需要显示一个模板。如果用户不登录,我需要显示另一个模板。如何在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 %} 
+0

你qury的是正确的,但我需要知道你是否建立了“后端或不是“如果不创建自定义后端然后尝试 – Cadmus

+0

我创建base.html文件和base_login.html文件 –

+0

得到此错误异常类型:\t TemplateSyntaxError 异常值:\t 第5行上的块标记无效:'else'。你忘了注册或加载这个标签吗? –

回答

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 %} 

Note: if function of render still doesn't work well, please try with render_to_response such as this answer: https://stackoverflow.com/a/1331183/6396981

+0

得到这个错误:

+0

这里主页的意思是主页 –

+0

我已经尝试过了,为我工作.. –

相关问题