{% url url_name %}
表示相对名称.
我如何才能执行类似于{% absolute_url url_name %}
的操作,使其返回带基的url(包括端口,如果存在)?
{% url url_name %}
表示相对名称.
我如何才能执行类似于{% absolute_url url_name %}
的操作,使其返回带基的url(包括端口,如果存在)?
有不同的解决方案.编写您自己的模板标签并使用 HttpRequest.build_absolute_uri(location)
.但是另一种方式,而且有点老套.
<a href="{{ request.scheme }}://{{ request.get_host }}{% url url_name %}">click here</a>
编辑:所以我有点困惑,这仍然让我得票.我现在觉得这真的很骇人.写一个自己的模板标签变得容易多了,所以这里是你自己标签的例子.
from django import template
from django.urls import reverse
register = template.Library()
@register.simple_tag(takes_context=True)
def abs_url(context, view_name, *args, **kwargs):
# Could add except for KeyError, if rendering the template
# without a request available.
return context['request'].build_absolute_uri(
reverse(view_name, args=args, kwargs=kwargs)
)
@register.filter
def as_abs_url(path, request):
return request.build_absolute_uri(path)
例如:
<a href='{% abs_url view_name obj.uuid %}'>
{% url view_name obj.uuid as view_url %}
<a href='{{ view_url|as_abs_url:request }}'>