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 }}
你可以像这样在模板中获取URL:
<p>URL of this page: {{ request.get_full_path }}</p>
或通过
{{ request.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',
)
然后,假设你发送了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)
)