2012-12-04 52 views
28

從django模板獲取用戶信息的最佳方式是什麼?在django模板中獲取用戶信息

例如,如果我只是想:

  1. 如果用戶登錄,顯示「歡迎[用戶名]」
  2. 否則,顯示登錄按鈕。

我使用Django的註冊/認證

+0

的可能的複製[?如何訪問Django模板的用戶配置文件(http://stackoverflow.com/questions/422140/how-to-access-the-user -profile-IN-A-Django的模板) –

回答

38

的另一種方法爲當前的Django版本:

{% if user.is_authenticated %} 
    <p>Welcome, {{ user.get_username }}. Thanks for logging in.</p> 
{% else %} 
    <p>Welcome, new user. Please log in.</p> 
{% endif %} 


注:在模板

  • 使用request.user.get_username()的意見& user.get_username。優先直接提及username屬性。 Source
  • 如果使用RequestContext,則此模板上下文變量可用。
  • django.contrib.auth.context_processors.auth默認情況下啓用&包含變量用戶
  • 你並不需要啓用django.core.context_processors.request模板背景處理器。

來源:https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates

36
{% if request.user.is_authenticated %}Welcome '{{ request.user.username }}' 
{% else %}<a href="{% url django.contrib.auth.login %}">Login</a>{% endif %} 

,並確保你已經安裝在你的settings.pyrequest模板背景處理器:

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'django.core.context_processors.request', 
    ... 
)