如何在Django模板中获取当前URL?

12 浏览
0 Comments

如何在Django模板中获取当前URL?

我在想如何在模板中获取当前 URL。

假设我的当前 URL 是:

.../user/profile/

我该如何将其返回给模板?

admin 更改状态以发布 2023年5月23日
0
0 Comments

你可以这样在你的模板中获取URL:

URL of this page: {{ request.get_full_path }}

或者如果你不需要额外的参数,可以使用 {{ request.path }} 来获取。

有些说明和更正应该针对hypete'sIgancio's 的回答,这里我只是简要概括整个想法,供以后参考。

如果你需要在模板中使用request变量,你必须将 'django.core.context_processors.request' 添加到TEMPLATE_CONTEXT_PROCESSORS 设置中,这不是默认的(Django 1.4)。

你还不能忘记你的应用使用的其他上下文处理器。因此,为了将请求添加到其他默认处理器中,可以将以下内容添加到设置中,避免硬编码默认处理器列表(可能会在以后的版本中更改):

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

然后,只要你在响应中发送request内容,例如像这样:

from django.shortcuts import render_to_response
from django.template import RequestContext
def index(request):
    return render_to_response(
        'user/profile.html',
        { 'title': 'User profile' },
        context_instance=RequestContext(request)
    )

0
0 Comments

Django 1.9及以上版本:

## template
{{ request.path }}  #  -without GET parameters 
{{ request.get_full_path }}  # - with GET parameters

旧版本:

## settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request',
)
## views.py
from django.template import *
def home(request):
    return render_to_response('home.html', {}, context_instance=RequestContext(request))
## template
{{ request.path }}

0