Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-检索未经身份验证的用户对象_Django - Fatal编程技术网

Django-检索未经身份验证的用户对象

Django-检索未经身份验证的用户对象,django,Django,正如标题所述,我需要用户检索不同用户的用户信息,无论他们是否经过身份验证 我有一个“配置文件”模板,带有一些逻辑,可以显示静态用户信息(用于公共)或可编辑用户信息(用于它所属的用户) 问题:我的模板中的条件返回“true”-用户对象似乎已通过身份验证,但未通过身份验证。如果我从该页面(配置文件)导航,则没有用户登录 我对Django相当陌生。我是否没有在my view.py中正确检索用户对象 视图.py def GetProfileById(request, userid): try:

正如标题所述,我需要用户检索不同用户的用户信息,无论他们是否经过身份验证

我有一个“配置文件”模板,带有一些逻辑,可以显示静态用户信息(用于公共)或可编辑用户信息(用于它所属的用户)

问题:我的模板中的条件返回“true”-用户对象似乎已通过身份验证,但未通过身份验证。如果我从该页面(配置文件)导航,则没有用户登录

我对Django相当陌生。我是否没有在my view.py中正确检索用户对象

视图.py

def GetProfileById(request, userid):
    try:
        user = User.objects.get(pk=userid)
    except User.DoesNotExist:
        return HttpResponseRedirect('/')

    try:
        user_profile = user.get_profile()
    except Exception:
        return HttpResponseRedirect('/')

    context = {'user': user, 'user_profile': user_profile}
    return render_to_response('profile.html', context, context_instance=RequestContext(request))
profile.html

{% if user.is_authenticated %}

    <form id="form-about" class="form-horizontal" action="{% url update-user-profile %}" method="POST">
        {% csrf_token %}
        <p>{{ about_form.first_name }}</p>
        <p>{{ about_form.last_name }}</p>
        <p>{{ about_form.birthday }}</p>
        <p>{{ about_form.profession }}</p>
        <button class="btn btn-primary" type="submit">Save</button>
    </form>

{% else %}

     <p><b>Name:</b> {{ user.first_name }} {{ user.last_name }}</p>
     <p><b>DOB:</b> {{ user_profile.birthday }}</p>
     <p><b>Profession:</b> {{ user_profile.profession }}</p>
     <p><b>Member since:</b> {{ user.date_joined|date:'Y-M-d'  }}</p>
     <p><b>Last login:</b> {{ user.last_login|date:'Y-M-d @ H:i' }}</p>

{% endif %}
{%if user.u经过身份验证%}
{%csrf_令牌%}
{{about_form.first_name}

{{about_form.last_name}

{{关于你的生日}

{{about_form.profession}

拯救 {%else%} 名称:{{user.first_Name}{{user.last_Name}}

DOB:{{user_profile.birth}}

职业:{{user_profile.Profession}}

成员自:{user.date_加入}日期:'Y-M-d'}

上次登录:{{user.Last_login}日期:'Y-M-d@H:i'}

{%endif%}
看起来,您试图做的是,如果用户当前已登录,您希望显示一个表单,让他们更新配置文件

所以问题是:

  • 在您的视图中,您正在将
    user
    设置为数据库中的用户对象
  • 此对象不表示或包含有关当前用户是否登录的信息。这只是数据库中的记录
  • 您要选中
    request.user
    ,它表示请求网页的用户的用户对象
  • 因此,在模板中,更改:

    {% if user.is_authenticated %}
    
    致:


    看起来,您试图做的是,如果用户当前登录,您希望显示一个表单,让他们更新配置文件

    所以问题是:

  • 在您的视图中,您正在将
    user
    设置为数据库中的用户对象
  • 此对象不表示或包含有关当前用户是否登录的信息。这只是数据库中的记录
  • 您要选中
    request.user
    ,它表示请求网页的用户的用户对象
  • 因此,在模板中,更改:

    {% if user.is_authenticated %}
    
    致:


    我相信你把
    user
    request.user
    搞混了。前者是显示的用户,后者是当前登录的用户,如果没有人登录,则为匿名用户

    如果当前登录的用户和正在显示的用户相同,您希望显示该表单,对吗?那就换衣服吧

    {%if user.u经过身份验证%}
    

    {%ifequal user request.user%}
    
    我认为您混淆了
    用户
    请求。用户
    。前者是显示的用户,后者是当前登录的用户,如果没有人登录,则为匿名用户

    如果当前登录的用户和正在显示的用户相同,您希望显示该表单,对吗?那就换衣服吧

    {%if user.u经过身份验证%}
    

    {%ifequal user request.user%}
    
    您是否希望
    .is\u authenticated()
    告诉您来自数据库的用户记录当前是否已登录?如果您单击一个链接,然后用户未登录,并不意味着他们以前未登录。我希望该页面具有两种行为。1) 如果请求的配置文件属于当前为特定会话登录的用户,则该页面应具有表单,以便用户可以更新其信息。2) 对于所有其他请求(验证或未验证),以静态形式显示配置文件信息(即不可编辑…无表单)。是否希望
    。\u authenticated()
    告诉您来自数据库的用户记录当前是否已登录?如果单击链接,则用户未登录,这并不意味着他们以前没有登录。我希望页面有两种行为。1) 如果请求的配置文件属于当前为特定会话登录的用户,则该页面应具有表单,以便用户可以更新其信息。2) 对于所有其他请求(无论是否经过身份验证),以静态形式显示配置文件信息(即,不可编辑…无表单)。这正是我要做的。我将在今晚晚些时候进行更改,并向您汇报。谢谢如果是这种情况,那么为什么user.is_authenticated返回true?根据文档,实例化用户的is_authenticated()方法总是返回true。这有多蠢?因此,作为一种解决方法,一旦我在我的视图函数中获得了一个用户对象,我就用我的模板所需的用户数据创建一个字典。您可能需要将请求上下文处理器添加到settings.py文件中。这正是我要做的。我将在今晚晚些时候进行更改,并向您汇报。谢谢如果是这种情况,那么为什么user.is_authenticated返回true?根据文档,实例化用户的is_authenticated()方法总是返回true。这有多蠢?因此,作为一种解决方法,一旦我在我的视图函数中获得了一个用户对象,我就用模板所需的用户数据创建一个字典。您可能需要将请求上下文处理器添加到settings.py文件中。