2012-11-29 17 views
6

Mi piacerebbe sapere come posso passare url come parametro di un inclusione nel template django.Come passare un url come parametro di include

Ho nel mio codice, un file HTML che viene utilizzato per creare un pulsante. Quindi, quando voglio aggiungere questo pulsante, lo includo semplicemente. Il problema è che 1 dei parametri è URL, e per ora non ho trovato altra soluzione che inserire l'url di testo.

Quindi ciò che ho questo:

{% include "button.html" with title="title" link="/new-event/" %} 

e che avrei dovuto avere qualcosa di simile:

{% include "button.html" with title="title" link={% url myview.view%} %} 

Grazie mille!

risposta

4

Credo che dovresti assegnare l'url ad una variabile che viene aggiunta al contesto per poterla usare in un tag di inclusione.

Esempio:

vista:

from django.core.urlresolvers import reverse 

def your_view(request): 
    url = reverse('the_url_name_to_reverse', args=[], kwargs={}) 
    return render(request, 'the-template.html', {'url': url}) 

modello:

{% include "button.html" with title="title" link=url %} 

Se si tratta di un valore è necessario in ogni modello, si potrebbe considerare l'aggiunta di un processore contesto aggiungi il valore dell'URL invertito al contesto

+0

Grazie per la risposta. In effetti era quello che stavo cercando. – trnsnt

+0

Sei il benvenuto. Sono contento di poterti aiutare. – Brandon

2

Alcuni potrebbero trovare questa soluzione più adatta:

prima creare un filtro

from django.core.urlresolvers import reverse 
@register.filter() 
def rev(value): 
    return reverse(value) 

quindi utilizzare nel modello come questo

{% include "button.html" with title="title" link="myview.view"|rev %} 
+0

Love it; evita di riempire la vista con codice non necessario. –

7

Hai provato la seguente sintassi:

{% url 'some-url-name' arg arg2 as the_url %} 
{% include "button.html" with title="title" link=the_url %} 
+1

È conciso, funziona e non richiede di scrivere alcun codice aggiuntivo. Grazie. – Mael

Problemi correlati