Django: Print url syn uten hardcoding url

stemmer
7

Kan jeg skrive ut en url /admin/manage/products/addav et bestemt syn i en mal?

Her er regelen jeg vil opprette en kobling for

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

Jeg ønsker å ha / administrere / produkter / legge til i en mal uten hardcoding det. Hvordan kan jeg gjøre dette?

Edit: Jeg bruker ikke standard admin (vel, jeg er, men det er på en annen url), dette er min egen

Publisert på 06/09/2008 klokken 02:42
kilden bruker
På andre språk...                            


3 svar

stemmer
15

Du kan bruke get_absolute_url, men det vil bare fungere for et bestemt objekt. Siden objektet ikke har blitt opprettet ennå, vil det ikke fungere i dette tilfellet.

Du ønsker å bruke navngitte nettadressemønstre . Her er en rask intro:

Endre linje i urls.py til:

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

Så, i malen du bruker dette for å vise URL:

{% url create-product %}

Hvis du bruker Django 1.5 eller høyere du trenger dette:

{% url 'create-product' %}

Du kan gjøre noen kraftigere ting med navngitte nettadressemønstre, de er veldig hendig. Legg merke til at de er bare i utviklingen versjon (og også 1.0).

Svarte 06/09/2008 kl. 07:22
kilden bruker

stemmer
2

Hvis du bruker heter webadressemønstrene kan du gjøre follwing i malen

{% url create_object %}
Svarte 06/09/2008 kl. 02:49
kilden bruker

stemmer
0

Den foretrukne måten å lage URL-er ved å legge en get_absolute_urlmetode til modell klasser. Du kan hardcode banen der slik at du i det minste få nærmere etter KISS filosofien.

Du kan gå videre ved å utnytte permalinkdekoratør at tallene banen basert på webadresser konfigurasjon.

Du kan lese mer i Django dokumentasjon her .

Svarte 06/09/2008 kl. 02:50
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more