Как изменить имя на абсолютный URL-адрес в шаблоне django?

{% url url_name %} дает относительное имя.

Как я могу сделать что-то вроде {% absolute_url url_name %}, чтобы он возвращал url с базой (включая порт, если он есть)?

Ответы

Ответ 1

Существуют разные решения. Напишите свой собственный templatetag и используйте HttpRequest.build_absolute_uri(location). Но по-другому, и немного взломанный.

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

Ответ 2

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

Попробуйте это :)

Ответ 3

В шаблоне я использую это для печати абсолютного URL-адреса с протоколом, хостом и портом, если он присутствует:

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

В Python я использую:

from django.core.urlresolvers import reverse

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