好第一關從來沒有做到這一點:
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