好第一关从来没有做到这一点:
data = Object.objects.filter(name="")
的Django有一个all()
函数将返回所有对象:
data = Object.objects.all()
其次,我希望object_view
,data
,object_info
,object.html
是不是你实际变量名称!如果是这样,请确保它们对您的应用程序有意义。
好了回到你的问题。那么,你不需要为每一个对象都做一个视图。我假设<a href="object">...</a>
应该引用将填充选定对象的新页面。
如果是这样,你会想要在<a>
标签这样的网址:/objects/object_id/
。
这个新的URL是否需要在urls.py
这样定义:
urlpatterns += [
url(r'^objects/(?P<oid>[0-9]+)/$', views.object_specific_view, name='objects'),
]
注意oid
url参数。我们将使用它来访问我们的特定对象。
现在你的原始模板,list.html
,应该是这样的:
{% for instance in object_info %}
<li><a href="{% url 'objects' oid = instance.id %}">instance.name</a></li>
{% endfor %}
如果我们提供instance.id
到oid
URL参数生成类似objects/1/
或objects/2/
等
现在,这意味着你将只需要使用另一个模板创建另一个视图。
你的第二个观点object_specific_view
:
def object_specific_view(request, oid): # The url argument oid is automatically supplied by Django as we defined it carefully in our urls.py
object = Object.objects.filter(id=oid).first()
context={
'object':object
}
return render(request, "specific_object.html", context)
现在,你只需要设计你的specific_object.html
并访问object
实例显示特定对象:)的详细信息。
它正在做我想要的东西,谢谢! – tchane