如何获取Django模板中的当前url?
我想知道如何获取模板中的当前url。
说我的url是
/user/profile/
如何将其返回到模板?
Django 1.9及以上版本:
## template {{ request.path }} {{ request.get_full_path }}
旧:
## 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 }}
您可以像这样获取模板中的url:
<p>URL of this page: {{ request.get_full_path }}</p>
或通过
{{ request.path }}
如果你不需要额外的参数。
一些精度和纠正应该带给海特和Igancio的答案,我将在这里总结整个想法,供将来参考。
如果您需要模板中的request
variables,则必须将“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的模板
只需从{{request.path}}
获取当前url
用参数{{request.get_full_path}}
获取完整的url
注意 :您必须在django TEMPLATE_CONTEXT_PROCESSORS
添加request
我想发送到模板的完整请求是有点多余的。 我这样做
def home(request): app_url = request.path return render(request, 'home.html', {'app_url': app_url}) ##template {{ app_url }}
这是一个古老的问题,但如果你使用django注册,可以这样简单地总结。
在你的login和注销链接(让你的页面标题说)添加下一个参数的链接将进入login或注销。 你的链接应该是这样的。
<li><a href="http://www.noobmovies.com/accounts/login/?next={{ request.path | urlencode }}">Log In</a></li> <li><a href="http://www.noobmovies.com/accounts/logout/?next={{ request.path | urlencode }}">Log Out</a></li>
就是这样,没有别的事情需要去做,注销时他们会立即被redirect到他们所在的页面,login后,他们将填写表单,然后redirect到他们所在的页面。 即使他们错误地尝试login它仍然有效。
其他答案是不正确的,至less在我的情况下。 request.path
不提供完整的url,只提供相对的url,例如/paper/53
。 我没有find任何适当的解决scheme,所以我最终硬编码的视图中的url的常量部分,然后连接到request.path
。