{% url url_name %}
給出了一個相對的名字。如何在django模板中將名稱轉換爲絕對url?
我該如何做一些像{% absolute_url url_name %}
這樣它返回帶有base的url(包括端口如果存在)?
{% url url_name %}
給出了一個相對的名字。如何在django模板中將名稱轉換爲絕對url?
我該如何做一些像{% absolute_url url_name %}
這樣它返回帶有base的url(包括端口如果存在)?
有不同的解決方案。寫你自己的模板標籤並使用HttpRequest.build_absolute_uri(location)
。但另一種方式,有點哈克。
<a href="{{ request.get_host }}{% url url_name %}">click here</a>
<a href="{{request.build_absolute_uri}}">click here</a>
試試這個 :)
單獨的代碼塊並不能提供很好的答案。請添加解釋(爲什麼它解決了問題,錯誤在哪裏等) –
訪問模板中的HttpRequest.build_absolute_uri()方法。這將很簡單,而不是{{request.get_host}} {%url url_name%} –
這隻適用於你只對請求路徑感興趣,而不是任意'url_name'。 – Flimm
在模板我用這個(如果存在)來打印協議,主機和端口絕對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,)))
有沒有辦法將協議在這? – Joost
https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.scheme應該可以幫助你解決這個問題。 – Blackeagle52