2012-11-29 12 views
6

Ich würde gerne wissen, wie ich URL als Parameter eines Include in Django Vorlage übergeben kann.Wie eine URL als Parameter von include übergeben werden

Ich habe in meinem Code eine HTML-Datei, die zum Erstellen einer Schaltfläche verwendet wird. Wenn ich also diesen Knopf hinzufügen möchte, füge ich ihn einfach hinzu. Problem ist, dass 1 der Parameter URL ist, und für den Moment habe ich keine andere Lösung als das Setzen von Text URL gefunden.

SO, was ich habe dies:

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

und ich möchte etwas haben, haben:

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

Thank you very much!

Antwort

4

Ich glaube, Sie müssten die URL einer Variablen zuweisen, die dem Kontext hinzugefügt wird, um es in einem Include-Tag zu verwenden.

Beispiel:

Ansicht:

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}) 

Vorlage:

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

Wenn es ein Wert, den Sie in jedem Template benötigen, könnten Sie einen Kontext Prozessor zum Hinzufügen Fügen Sie den umgekehrten URL-Wert zum Kontext

hinzu
+0

Vielen Dank für Ihre Antwort. In der Tat war es das, wonach ich suchte. – trnsnt

+0

Sie sind herzlich willkommen. Froh, dass ich helfen konnte. – Brandon

2

Man könnte diese Lösung besser geeignet finden:

zuerst einen Filter erstellen

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

es dann wie diese in der Vorlage verwenden

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

Liebe es; es vermeidet, die Ansicht mit unnötigem Code aufzufüllen. –

7

Haben Sie versucht, diese Syntax:

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

Es ist prägnant, es funktioniert, und ich muss keinen zusätzlichen Code schreiben. Vielen Dank. – Mael

Verwandte Themen