如何在Django模板中获取当前URL?
如何在Django模板中获取当前URL?
我在想如何在模板中获取当前 URL。
假设我的当前 URL 是:
.../user/profile/
我该如何将其返回给模板?
admin 更改状态以发布 2023年5月23日
你可以这样在你的模板中获取URL:
URL of this page: {{ request.get_full_path }}
或者如果你不需要额外的参数,可以使用 {{ request.path }}
来获取。
有些说明和更正应该针对hypete's和Igancio'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) )
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 }}