Domanda

Posso stampare un URL /admin/manage/products/add di una determinata vista in un modello?

Ecco la regola per la quale voglio creare un collegamento

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

Vorrei avere /manage/products/add in un modello senza codificarlo.Come posso fare questo?

Modificare: Non sto utilizzando l'amministratore predefinito (beh, lo sto facendo ma è su un altro URL), questo è il mio

È stato utile?

Soluzione

Puoi usare get_absolute_url, ma funzionerà solo per un oggetto particolare.Poiché il tuo oggetto non è stato ancora creato, in questo caso non funzionerà.

Vuoi usare modelli URL denominati.Ecco una breve introduzione:

Cambia la riga nel tuo urls.py in:

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

Quindi, nel tuo modello usi questo per visualizzare l'URL:

{% url create-product %}

Se utilizzi Django 1.5 o versioni successive ti serve questo:

{% url 'create-product' %}

Puoi fare cose più potenti con i pattern URL con nome, sono molto utili.Tieni presente che sono solo nella versione di sviluppo (e anche 1.0).

Altri suggerimenti

Se usi modelli di URL con nome puoi fare quanto segue nel tuo modello

{% url create_object %}

Il modo preferito per creare l'URL è aggiungere un file get_absolute_url metodo alle classi del modello.Puoi codificare il percorso lì in modo da avvicinarti almeno a seguire la filosofia KISS.

Puoi andare oltre utilizzando il file permalink decoratore che calcola il percorso in base alla configurazione degli URL.

Puoi leggere di più nella documentazione di Django Qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top