我正处于项目的早期阶段,想知道这是否可行:
我的数据库中有10个对象代表一个人(身份,姓名,年龄,性别,位置)。我想做的是在自己的页面上显示每个人的自定义网址(example.com/person/1,example.com/person/2等)。
我的模型和视图可以在一个页面上同时显示所有人。我怎样才能重写这个以便一次在一个页面上显示一个人?
这是我的模特:
class Person(models.Model):
id = models.IntegerField()
name = models.CharField(max_length=120)
age = models.IntegerField()
sex = models.CharField(max_length=120)
location = models.CharField(max_length=120)
def __unicode__(self):
return "%r, %s, %s, %s, %s, %s" % (self.id, self.name, self.age, self.sex, self.location)
以下是我的观点:
def person(request):
person_info = Person.objects.all()
person_data = {
"person_detail" : person_info
}
return render(request, 'index.html', person_data)
我是Django的新手,如果我错过了一个明显的答案,我会道歉。
答案 0 :(得分:2)
当您尝试显示特定的配置文件时,views.py
文件必须带参数。
试试这个:
def person(request, id):
person = Person.objects.get(pk=id)
return render(request, 'person/index.html', {'person': person, })
应该这样做。
此外,您必须在urls.py文件中添加一个条目
url(r'/person/(?P<id>\d+)/$', views.person),
答案 1 :(得分:0)
是的,你可以做到。
您所要做的就是:修改您的urls.py以使用参数定义URL,在视图中提取该参数(它将作为参数或关键字参数传递给视图)并提取一个人,使用get或filter而不是所有
答案 2 :(得分:0)
只是一个例子
您需要再创建一个名为example&#34; profile_data&#34;
的函数views.py
def profile_data(request,userid)
person_info = Person.objects.get(id=userid)
person_data = {
"person_detail" : person_info
}
return render(request, 'profile.html', person_data)
url.py
url(r'^profile/(?P<userid>\d+)/$', app.views.profile)
您需要将userid传递给该网址,这样您就可以获得该特定用户的详细信息。