Подтвердить что ты не робот

Как я могу получить имя пользователя вошедшего в систему пользователя в 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 я получаю имя пользователя, но в шаблоне мне нужно получить эту информацию из представления.

Спасибо. =)

4b9b3361

Ответ 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