0

requestcontext、user、および get_profile を使用して、現在ログインしているユーザーを呼び出すことに慣れています。
現在ログインしているユーザーではなく、別のページを作成するとどうなりますか?

私のURLは:

r'^/profile/(\w+)/$' 

ビューは次のとおりです。

from django.contrib.auth.models import User

def profile(request, username):
    person = User.objects.filter(username=username)
    return render_to_response('profile.html', {"person":person}, 
         context_instance=RequestContext(request))

私のテンプレートでは、{{user.username}} または {{user.get_profile.name}} を入力して値を取得できますが、{{person.username}} または {{person.get_profile.name}} はできません。必要な情報を取得するにはどのような方法がありますか? 前もって感謝します。

4

2 に答える 2

2

.filter一致するものが1つしかない場合でも、リストを返します。正確に1つのユーザー名を探しているので、を使用する.get(username=username)と、ユーザーは1つのオブジェクトだけになります。

于 2012-04-18T19:59:57.283 に答える
1

Django のドキュメントのオブジェクトの取得を参照してください。QuerySet を返すメソッド:

メソッド .all()

all() メソッドは、データベース内のすべてのオブジェクトの QuerySet を返します。

>> users = User.objects.all()
>> type(users) # This is a QuerySet, not a User object
<class 'django.db.models.query.QuerySet'>

メソッド .filter() および exclude()

filter(**kwargs)
指定されたルックアップ パラメータに一致するオブジェクトを含む新しい QuerySet を返します。

exclude(**kwargs)
指定された検索パラメーターに一致しないオブジェクトを含む新しい QuerySet を返します。

>> users = User.objects.filter(username=username)
>> type(users) # This is a QuerySet, not a User object
<class 'django.db.models.query.QuerySet'>

>> users = User.objects.exclude(username=username)
>> type(users) # This is a QuerySet, not a User object
<class 'django.db.models.query.QuerySet'>

ここで、QuerySets を返さないメソッドを見てみましょう。

これはあなたが使用する必要があるものです:

メソッド .get()

get(**kwargs)
指定されたルックアップ パラメーターに一致するオブジェクトを返します。これは、フィールド ルックアップで説明されている形式である必要があります。

>> users = User.objects.exclude(username=username)
>> type(users) # This is a User object
<class 'YourProject.YourApp.models.User'>
于 2012-04-18T20:31:53.250 に答える