2016-09-04 50 views
1

我有一個問題想的,而不是僅僅1發送與請求上下文和{%如果%}工作不正常

觀點方法找出以下原因會呈現出「嗨」和1一個HTML頁面, 。

def index(request): 

    context = { 
       'test' : 1, 
    } 
    return render(request, 'index.html', context)  

template html。渲染index.html將同時顯示'hi'和1.但是上下文中沒有用戶,那麼爲什麼if用戶會經歷?

{% if user %} 
     <h1>hi</h1> 
    {% endif %} 

    {% if test %} 
     <h1>{{ test }}</h1> 
    {% endif %} 

回答

2

答案是Django的內置上下文處理器django.contrib.auth.context_processors.auth。它默認啓用,這意味着將代表當前登錄用戶的auth.User對象自動發送到名稱爲user的所有模板。

docs

context_processors選項是可調用的列表 - 稱爲上下文處理器 - 它們採取的請求對象作爲參數,返回項目的字典合併到上下文。 在默認生成的設置文件,默認的模板引擎包含以下方面:處理器

[ 
    'django.template.context_processors.debug', 
    'django.template.context_processors.request', 
    'django.contrib.auth.context_processors.auth', 
    'django.contrib.messages.context_processors.messages', 
] 
+0

感謝您的解釋。 :) – vandelay

1

如果有用戶登錄django將創建一個AUTH_USER_MODEL表示當前登錄的用戶。也可以從請求對象中訪問用戶模型而不指定上下文。例如,如果用戶已登錄,則可以執行request.user.username,並且用戶名將顯示在模板中。

相關問題