In einem Django-Projekt habe ich eine Mini-Navbar, die in ~ 30% meiner Vorlagen üblich ist. Anstatt es in meine globale base.html
aufzunehmen, entschied ich mich für eine andere Route.NoReverseMatch beim Importieren einer Django-Vorlage in eine andere gefunden
Ich schrieb zuerst eine separate Ansicht für diese:
from django.template.loader import render_to_string
def navbar(origin=None):
if origin == '1':
locations = get_approved_loc(withscores=True)
else:
locations = get_approved_loc()
obj_count = get_all_obj_count()
return render_to_string("mini_navbar.html",{'top_3_locs':locations[:3],\
'other_cities':len(locations[3:]),'obj_count':obj_count})
ich es als nächstes in den Vorlagen hinzugefügt, um es in über sein musste:
{% include "mini_navbar.html" with origin='1' %}
Wenn ich diesen Code ausführen, bekomme ich ein NoReverseMatch
Fehler. Es scheint, dass die View-Funktion navbar
niemals ausgeführt wird. Daher werden die Kontextvariablen, die gesendet wurden (z. B. top_3_locs
oder other_cities
usw.), nie ausgefüllt. Daher NoReverseMatch
.
Was ist los mit diesem Muster, und was ist die Lösung dafür? Ein illustratives Beispiel würde den Trick machen.
'include' ruft keine Ansicht auf, es enthält eine andere Vorlage, die zwei Snippets, die Sie eingefügt haben, sind nicht verwandt – Sayse
keine Notwendigkeit der Ansicht, um eine Vorlage in einer anderen Vorlage zu verwenden, verwenden Sie einfach –
das gleiche, was Sie getan haben früher, eine Vorlage machen und in base.html einbinden – Exprator