Как я могу получить имя пользователя вошедшего в систему пользователя в Django?
Как я могу получить информацию о зарегистрированном пользователе в приложении Django?
Например:
Мне нужно знать имя пользователя вошедшего в систему пользователя, чтобы сказать, кто разместил обзор:
<form id='formulario' method='POST' action=''>
<h2>Publica tu tuit, {{ usuario.username.title }} </h2>
{% csrf_token %}
{{formulario.as_p}}
<p><input type='submit' value='Confirmar' /></p>
</form>
В usuario.username.title
я получаю имя пользователя, но в шаблоне мне нужно получить эту информацию из представления.
Спасибо. =)
Ответы
Ответ 1
Вы можете использовать объект запроса, чтобы найти вошедшего в систему пользователя
def my_view(request):
username = None
if request.user.is_authenticated():
username = request.user.username
Согласно https://docs.djangoproject.com/en/2.0/releases/1.10/
В версии Django 2.0 синтаксис изменился на
request.user.is_authenticated
Ответ 2
request.user.get_username()
или request.user.username
, прежний является предпочтительным.
Django сообщает:
Поскольку модель пользователя может быть заменена вы должны использовать этот метод вместо ссылки на имя пользователя атрибут напрямую.
P.S. Для шаблонов используйте {{ user.get_username }}
Ответ 3
' request.user' имеет зарегистрированного пользователя.
' request.user.username' вернет имя пользователя, зарегистрированного в системе.
Ответ 4
если вы используете старый способ написания представлений, на основе функций-Based-Views...
в вашем представлении вы создаете новую переменную с именем usuario
, чтобы сохранить request.user, вероятно...
но если вы вернетесь к Template
a context_instance
, передав значение Контекста запроса, вы получите зарегистрированного пользователя, просто обратившись к request
.
// In your views file
from django.shortcuts import render_to_response
from django.template import RequestContext
def your_view(request):
data = {
'formulario': Formulario()
# ...
}
return render_to_response('your_template.html',
data, context_instance=RequestContext(request))
// In your template
<form id='formulario' method='POST' action=''>
<h2>Publica tu tuit, {{ request.user.username.title }} </h2>
{% csrf_token %}
{{ formulario.as_p }}
<p><input type='submit' value='Confirmar' /></p>
</form>
Ответ 5
request.user.get_username()
вернет строку электронной почты пользователя.
request.user.username
вернет метод.
Ответ 6
Для классифицированных представлений используйте self.request.user.id