1

タイトルにあるように、認証されているかどうかに関係なく、ユーザーがさまざまなユーザーのユーザー情報を取得する必要があります。

静的なユーザー情報 (パブリックの場合) または編集可能なユーザー情報 (所属するユーザーの場合) を表示するロジックを備えた「プロファイル」テンプレートがあります。

問題:テンプレートの条件が「true」を返します。ユーザー オブジェクトは認証されているように見えますが、そうではありません。そのページ(プロファイル)からナビゲートすると、ユーザーはログインしていません。

私はDjangoにかなり慣れていません。view.py で User オブジェクトを正しく取得していませんか?

ビュー.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 %}
4

2 に答える 2

3

あなたがしようとしているのは、ユーザーが現在ログインしている場合、プロファイルを更新できるフォームを表示したいということです。

問題は次のとおりです。

  1. ビューではuser、データベースから User オブジェクトに設定しています。
  2. このオブジェクトは、現在のユーザーがログインしているかどうかに関する情報を表したり、含んだりしません。これは、データベースからの単なるレコードです。
  3. request.userWeb ページを要求したユーザーの User オブジェクトを表すをチェックします。

したがって、テンプレートで次のように変更します。

{% if user.is_authenticated %}

に:

{% if request.user.is_authenticated %}
于 2013-02-28T04:27:31.550 に答える
1

私はあなたが混乱userしていると信じていますrequest.user. 前者は表示されているユーザー、後者は現在ログインしているユーザー、または誰もログインしていない場合は AnonymousUser です。

現在ログインしているユーザーと表示されているユーザーが同じなら、そのフォームを表示したいですよね?あとは変えるだけ

{% if user.is_authenticated %}

{% ifequal user request.user %}
于 2013-03-04T20:38:55.560 に答える