1

ユーザーの友達のリストを返すコンテキストプロセッサがあります。現在、ユーザーのいないクリーンなデータベースがあり、エラーが発生しているため、ユーザーがログインしている場合にのみ友人の辞書を返すようにしたいと思います:

Exception Type: DoesNotExist at /
Exception Value: UserProfile matching query does not exist.

ここに私が試していた2つのバージョンがありますが、運がありません. 一致するユーザーを検索すべきではないのに、まだ検索しているのはなぜですか?

def friends_list(request):
    if request.user.is_authenticated:
        userprofile = UserProfile.objects.get(user=request.user)
        friends = Friend.objects.filter(friend_of=userprofile)
    else:
        friends = {}
    return {'friends': friends}

def friends_list(request):
    userprofile = UserProfile.objects.get(user=request.user)
    if userprofile:
        friends = Friend.objects.filter(friend_of=userprofile)
    else:
        friends = {}
    return {'friends': friends}
4

2 に答える 2

5

システムが UserProfiles を作成する方法はわかりませんが、ユーザーがログインしていても、UserProfile がないように見えます。UserProfile が存在しない可能性があると仮定して、コードを記述する必要があります。

def friends_list(request):
    userprofile = None
    if request.user.is_authenticated:
        try:
            userprofile = UserProfile.objects.get(user=request.user)
        except DoesNotExist:
            pass
    if userprofile:
        friends = Friend.objects.filter(friend_of=userprofile)
    else:
        friends = []
    return {'friends': friends}
于 2010-07-05T02:19:47.250 に答える
0

同期中に管理者を作成しても UserProfile が作成されず、UserProfile.get() で DoesNotExist 例外が発生するため、エラーが発生します。

これを変える:

userprofile = UserProfile.objects.get(user=request.user)

に:

userprofile,created = UserProfile.objects.get_or_create(user=request.user)

そして元気です。

于 2010-07-05T02:34:05.453 に答える