it-swarm-pt.tech

Obter informações do usuário em modelos do Django

Qual é a melhor maneira de obter informações do usuário a partir de um modelo do Django?

Por exemplo, se eu quiser apenas:

  1. Se o usuário estiver logado, exiba "Bem-vindo [nome de usuário]"
  2. Caso contrário, exiba o botão de login.

Estou usando o Django-registration/authentication

35
River Tam

Um método alternativo para as versões atuais do 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 %}


Nota: 

  • Use request.user.get_username() em views e user.get_username em templates. Preferido sobre o atributo username de referência diretamente. Fonte
  • Esta variável de contexto de modelo está disponível se um RequestContext for usado.
  • Django.contrib.auth.context_processors.auth está habilitado por padrão e contém a variável user 
  • Você NÃO precisa ativar o processador de contexto de modelo Django.core.context_processors.request.

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

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

e verifique se você tem o processador de contexto de modelo request instalado em seu settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'Django.core.context_processors.request',
    ...
)
37
Timmy O'Mahony

De acordo com o título da pergunta, o seguinte pode ser útil para alguém. usei os seguintes no meu modelo:

Nome de usuário : {{ user.username }}

Nome completo do usuário : {{ user.get_full_name }}

Grupo de usuários : {{ user.groups.all.0 }}

Email : {{ user.email }}

Sessão iniciada em : {{ user.last_login }}

Obrigado :)

5
Mohammad

Primeiramente, primeiro, se seus campos mudaram o nome, você deve sobrescrever as funções (get_full_name (), get_short_name (), etc), desta forma:

def get_full_name(self):
    return self.names + ' ' + self.lastnames

def get_short_name(self):
    return self.names

No modelo, você pode mostrar dessa maneira

{% if user.is_authenticated %}
<strong>{{ user.get_short_name }}</strong>
{% endif %}

estes são os métodos de autenticação https://docs.djangoproject.com/es/2.1/topics/auth/customizing/

0
Diego Santa Cruz Mendezú