Frage

Kann ich eine URL ausdrucken? /admin/manage/products/add einer bestimmten Ansicht in einer Vorlage?

Hier ist die Regel, für die ich einen Link erstellen möchte

(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),

Ich möchte /manage/products/add in einer Vorlage haben, ohne sie fest zu codieren.Wie kann ich das machen?

Bearbeiten: Ich verwende nicht den Standardadministrator (nun ja, aber er befindet sich unter einer anderen URL), dies ist mein eigener

War es hilfreich?

Lösung

Sie können verwenden get_absolute_url, aber das funktioniert nur für ein bestimmtes Objekt.Da Ihr Objekt noch nicht erstellt wurde, funktioniert es in diesem Fall nicht.

Sie möchten verwenden benannte URL-Muster.Hier ist eine kurze Einführung:

Ändern Sie die Zeile in Ihrer urls.py in:

(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}, "create-product"),

Dann verwenden Sie in Ihrer Vorlage Folgendes, um die URL anzuzeigen:

{% url create-product %}

Wenn Sie Django 1.5 oder höher verwenden, benötigen Sie Folgendes:

{% url 'create-product' %}

Mit benannten URL-Mustern können Sie einige leistungsfähigere Dinge tun, sie sind sehr praktisch.Beachten Sie, dass sie nur in der Entwicklungsversion (und auch 1.0) vorliegen.

Andere Tipps

Wenn du benutzt Benannte URL-Muster Sie können in Ihrer Vorlage Folgendes tun

{% url create_object %}

Die bevorzugte Methode zum Erstellen der URL ist das Hinzufügen von a get_absolute_url -Methode zu Ihren Modellklassen hinzufügen.Sie können den Weg dorthin fest codieren, um der KISS-Philosophie zumindest näher zu kommen.

Sie können noch weiter gehen, indem Sie die nutzen permalink Dekorator, der den Pfad basierend auf der URL-Konfiguration berechnet.

Weitere Informationen finden Sie in der Django-Dokumentation Hier.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top