2013-09-26 47 views

回答

20

有不同的解決方案。寫你自己的模板標籤並使用HttpRequest.build_absolute_uri(location)。但另一種方式,有點哈克。

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

有沒有辦法將協議在這? – Joost

+0

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.scheme應該可以幫助你解決這個問題。 – Blackeagle52

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

試試這個 :)

+0

單獨的代碼塊並不能提供很好的答案。請添加解釋(爲什麼它解決了問題,錯誤在哪裏等) –

+0

訪問模板中的HttpRequest.build_absolute_uri()方法。這將很簡單,而不是{{request.get_host}} {%url url_name%} –

+2

這隻適用於你只對請求路徑感興趣,而不是任意'url_name'。 – Flimm

5

在模板我用這個(如果存在)來打印協議,主機和端口絕對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,)))