如何在django模板中获取base_url

时间:2015-02-19 21:29:25

标签: python django

鉴于一个网站,您如何在django模板中获取该主机,而不从视图中传递该变量?

http://google.com/hello --> {{ BASE_URL }} ==> 'http://google.com'

5 个答案:

答案 0 :(得分:16)

以下post

对此进行了广泛的回答

有几种方法可以做到:

  1. 正如david542所描述的**
  2. 在模板中使用{{request.get_host}} **
  3. 使用contrib.sites框架
  4. **请注意这些可能是欺骗性的

答案 1 :(得分:8)

这些其他答案均未考虑方案。这对我有用:

{{ request.scheme }}://{{ request.get_host }}

答案 2 :(得分:1)

您可以通过在设置中添加以下request中间件来获取模板中的TEMPLECT_CONTEXT_PROCESSOR对象:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request',
)

这里有一些documentation。然后你可以调用你的模板:

{{ request.META.HTTP_NAME }}

这将为您提供基本网址。

答案 3 :(得分:1)

在模板中获取基本网址

{{ request.get_host }}

答案 4 :(得分:1)

URL:google.com/hello

在模板中:

{{ request.get_full_path }}
return /hello

OR

{{ request.get_host }}
return google.com

视图中

from django.contrib.sites.shortcuts import get_current_site

def home(request):
    get_current_site(request)
    # google.com

    # OR
    request.get_host()
    # google.com

    # OR
    request.get_full_path()
    # /hello