2017-02-16 62 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

我已經嘗試過了,爲我工作.. –