2013-09-26 13 views

Odpowiedz

20

Istnieją różne rozwiązania. Napisz własny templatetag i użyj HttpRequest.build_absolute_uri(location). Ale w inny sposób i nieco hacky.

<a href="{{ request.get_host }}{% url url_name %}">click here</a> 
+2

Czy istnieje sposób na uwzględnienie protokół w tym? – Joost

+0

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.scheme powinien pomóc w rozwiązaniu tego problemu. – Blackeagle52

8
<a href="{{request.build_absolute_uri}}">click here</a> 

Spróbuj :)

+0

Sam blok kodu nie zapewnia dobrej odpowiedzi. Dodaj wyjaśnienia (dlaczego rozwiązuje problem, gdzie popełniono błąd itp.). –

+0

Uzyskiwanie dostępu do metody HttpRequest.build_absolute_uri() w szablonie. Będzie to prostsze i łatwiejsze niż {{request.get_host}} {% url url_name%} –

+2

Działa to tylko wtedy, gdy interesuje cię tylko ścieżka zapytania, a nie arbitralna 'nazwa_domeny'. – Flimm

5

W szablonie używam tego, aby wydrukować bezwzględny adres URL z protokołem, host i port jeśli występuje:

<a href="{{ request.scheme }}://{{ request.get_host }}{% url url_name %}">link</a> 

W Pythonie Używam:

from django.core.urlresolvers import reverse 

def do_something(request): 
    link = "{}://{}{}".format(request.scheme, request.get_host(), reverse('url_name', args=(some_arg1,))) 
Powiązane problemy