2012-04-18 5 views
0

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

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

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

私のURLがある

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}}は取得しません。必要な情報を取得する方法は何ですか?前もって感謝します。

答えて

2

.filterはそれだけで1つの試合があっても、リストを返します。正確に1つのユーザー名を探しているので、.get(username=username)を使用すると、あなたの人は1つのオブジェクトだけで終了します。

+0

すごくありがとうございました! – magu2

+0

クール - うまくいけば、この回答を「受け入れる」必要があります:) – zigdon

1

あなたはDjangoのマニュアルのRetrieving objectsを見てみる必要があります。クエリセットを返す方法:

方法.ALL()

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

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

方法.filter()と(除外)

フィルタ(** kwargsから)
は 指定の照合パラメタに一致するオブジェクトを含む新しいクエリセットを返します。

は(** kwargsから)
を除外指定した検索パラメータに一致しないオブジェクトの入った新たなクエリセットを返します。今

>> 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'> 

、あなたがMethods that do not return QuerySetsを見てみます。

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

方法に.get()

のget(** kwargsから)
はすべき特定の検索パラメータを、一致するオブジェクトを返します。フィールド検索で説明されている形式にしてください。

>> users = User.objects.exclude(username=username) 
>> type(users) # This is a User object 
<class 'YourProject.YourApp.models.User'> 
関連する問題