Okay, zunächst einmal das nie tun:
data = Object.objects.filter(name="")
Django hat eine all()
Funktion, die alle Objekte zurück:
data = Object.objects.all()
Zweitens habe ich object_view
hoffen, data
, object_info
, object.html
sind nicht Ihre tatsächliche Variablennamen! Wenn ja, stellen Sie bitte sicher, dass sie für Ihre Anwendung sinnvoll sind.
Okay zurück zu deinem Problem. Nun, Sie müssen nicht für jedes einzelne Objekt eine Ansicht machen. Ich gehe davon aus, dass <a href="object">...</a>
auf eine neue Seite verweisen sollte, die mit dem ausgewählten Objekt gefüllt wird.
Wenn ja, möchten Sie URLs in den <a>
Tags wie folgt haben: /objects/object_id/
.
Diese neue URL muss in urls.py
wie folgt definiert werden:
urlpatterns += [
url(r'^objects/(?P<oid>[0-9]+)/$', views.object_specific_view, name='objects'),
]
Hinweis das oid
url Argument. Wir werden es verwenden, um auf unser spezifisches Objekt zuzugreifen.
Jetzt ist Ihre ursprüngliche Vorlage, list.html
, sollte wie folgt aussehen:
{% for instance in object_info %}
<li><a href="{% url 'objects' oid = instance.id %}">instance.name</a></li>
{% endfor %}
Wo wir instance.id
-oid
url Argument liefern so etwas wie objects/1/
oder objects/2/
usw.
Nun zu produzieren, bedeutet dies, dass Sie Sie müssen nur eine weitere Ansicht mit einer anderen Vorlage erstellen.
Ihre zweite Ansicht 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)
Jetzt müssen Sie nur Ihre specific_object.html
entwerfen und die object
Instanz zugreifen Details eines bestimmten Objekts zeigen :).
Es macht was ich will jetzt, danke! – tchane