我想知道如何在模板中获得当前URL。
假设我当前的URL是:
.../user/profile/
如何将此返回到模板?
我想知道如何在模板中获得当前URL。
假设我当前的URL是:
.../user/profile/
如何将此返回到模板?
当前回答
你可以像这样在模板中获取URL:
<p>URL of this page: {{ request.get_full_path }}</p>
或通过
{{请求。如果不需要额外的参数,则使用Path}}。
hypete和Igancio的回答应该有一些精确和更正,我只是在这里总结一下整个想法,以供将来参考。
如果你需要在模板中使用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',
)
然后,如果你在响应中发送请求内容,例如:
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)
)
其他回答
{{请求。路径}}和{{request。get_full_path}}返回当前URL而不是绝对URL,例如:
your_website.com/wallpapers/new_wallpaper 两者都会返回/new_wallpaper/ (注意前面和后面的斜杠)
所以你得做点什么
{% if request.path == '/new_wallpaper/' %}
<button>show this button only if url is new_wallpaper</button>
{% endif %}
但是,您可以使用以下方法获得绝对URL(感谢上面的答案)
{{ request.build_absolute_uri }}
注意: 你不需要在settings.py中包含请求,它已经在那里了。
下面的代码帮助我:
{{ request.build_absolute_uri }}
我想发送到模板完整的请求有点多余。我这样做
from django.shortcuts import render
def home(request):
app_url = request.path
return render(request, 'home.html', {'app_url': app_url})
##template
{{ app_url }}
在django模板中 简单地从{{request.path}}获取当前url 获取参数为{{request.get_full_path}}的完整url
注意: 你必须在django TEMPLATE_CONTEXT_PROCESSORS中添加request
如果你正在使用渲染部分,最好使用
{{请求。path_info}}
它返回页面的确切url