2012-04-18 37 views
0

我熟悉调用当前登录的用户,使用:requestcontext,user和get_profile。
如果我正在创建另一个页面,而不是当前登录的用户,该怎么办?DJANGO调用其他用户的配置文件

我的网址是:

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}}。什么是我可以检索我需要的信息的方式?先谢谢你。

回答

2

.filter返回一个列表,即使它只有一个匹配。既然你正在寻找一个用户名,使用.get(username=username),你的人最终只有一个对象。

+0

哇感谢速战速决! – magu2 2012-04-18 20:06:02

+0

酷 - 如果它工作,你应该'接受'这个答案:) – zigdon 2012-04-18 20:07:30

1

你应该看看Django文档中的Retrieving objects。方法返回查询集:

方法。所有()

全()方法返回 数据库中所有对象的一个​​QuerySet。

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

方法.filter()和排除()

滤波器(** kwargs)
返回包含匹配 给定的查找参数的对象的新查询集。

排除(** 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'> 

现在,如果你看看Methods that do not return QuerySets

这就是你需要使用:

方法获得()

GET(** kwargs)
返回符合指定查找参数对象,它应该采用字段查找中描述的格式。

>> users = User.objects.exclude(username=username) 
>> type(users) # This is a User object 
<class 'YourProject.YourApp.models.User'> 
相关问题