如何在Django中获取登录用户的用户名?

时间:2013-06-03 21:57:15

标签: python django django-templates django-views models

如何在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中,我获得了用户名,但在模板中,我需要从视图中获取该信息。

感谢。 =)

9 个答案:

答案 0 :(得分:69)

您可以使用请求对象查找登录用户

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

答案 1 :(得分:31)

request.user.get_username()request.user.username,前者是首选。

Django docs say:

  

由于可以交换用户模型   out,您应该使用此方法而不是引用用户名   属性直接。

P.S。对于模板,请使用{{ user.get_username }}

答案 2 :(得分:7)

&#39;的 request.user &#39;有登录用户。
&#39;的 request.user.username &#39;将返回登录用户的用户名。

答案 3 :(得分:3)

如果您使用旧的写入视图方式,那就是基于函数的视图...

在您的视图中,您正在创建一个名为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>

答案 4 :(得分:1)

request.user.get_username()将返回用户电子邮件的字符串。

request.user.username将返回一个方法。

答案 5 :(得分:1)

您可以使用它来获取登录用户的用户名:-

{{ request.user.username }}

答案 6 :(得分:0)

对于基于分类的视图,请使用self.request.user.id

答案 7 :(得分:0)

对于模板,您可以使用

{% firstof request.user.get_full_name request.user.username %}

firstof 将返回第一个如果不为 null 否则返回第二个

答案 8 :(得分:0)

通过这种方式,您可以检查用户是否已登录如果是,例如如果没有返回登录页面,请转到个人资料

def profile(request):
    try:
        if request.user.username in User:
            return render(request, "profile.html", {'username': request.user.username})
    except:
        return redirect("/accounts/login")