2012-04-18 2 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은 일치하는 항목이 하나만있는 경우에도 목록을 반환합니다. 정확히 하나의 사용자 이름을 찾고 있으므로 .get(username=username)을 사용하면 사용자가 하나의 객체로 끝납니다.

+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 살펴합니다. 어떤 경우,
지정된 검색 매개 변수와 일치하는 객체를 돌려줍니다 (** kwargs로)를

방법 갔지()

GET을 :

당신이 사용해야 할 것입니다 필드 조회에 설명 된 형식이어야합니다.

>> users = User.objects.exclude(username=username) 
>> type(users) # This is a User object 
<class 'YourProject.YourApp.models.User'> 
관련 문제