我想知道如何在模板中获得当前URL。
假设我当前的URL是:
.../user/profile/
如何将此返回到模板?
我想知道如何在模板中获得当前URL。
假设我当前的URL是:
.../user/profile/
如何将此返回到模板?
当前回答
{{请求。路径}}和{{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中包含请求,它已经在那里了。
其他回答
我想发送到模板完整的请求有点多余。我这样做
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 1.9及以上版本:
## template
{{ request.path }} # -without GET parameters
{{ request.get_full_path }} # - with GET parameters
Old:
## 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 }}
要将get参数传递给模板, 你可以通过views.py文件传递它
例子:
return render(request, 'test.html',{'get_parameter_name' : get_parameter_value})
并在模板中使用如下:
{{get_parameter_name}}
你可以使用{{request.path}}获取不带参数的url。 你可以使用{{request.get_full_path}}来获取带参数的url。
在Django 3中,你需要使用url template标签:
{% url 'name-of-your-user-profile-url' possible_context_variable_parameter %}
具体示例请参见文档