在模板中读取路径
有没有办法读取当前页面的路径呢?比如说,我现在在 www.example.com/foo/bar/ 这个地址上,我想获取 '/foo/bar/' 这个部分。我需要在模板文件中做到这一点,而不想修改视图文件,因为我有太多的视图文件需要编辑。
谢谢!
3 个回答
2
我最后用了这个方法,但在过程中遇到了一点小问题。希望我的解决过程能帮到其他人,节省一些时间。
一开始,我在我的settings.py文件里加了这一行:
TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.request",)
这样做让我可以在模板中通过模板变量{{ request.path }}
访问请求路径,因为这个模板是通过RequestContext
传递过来的。不过,这样做也禁用了其他所有的上下文处理器。为了解决这个问题,我尝试把默认的上下文处理器加到TEMPLATE_CONTEXT_PROCESSORS
这个元组里。起初我失败了,因为我用了Django 1.2的上下文处理器,而我安装的是Django 1.1。解决了这个问题后,我的settings文件变成了这样:
TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
2
request.path
是一个用来获取用户请求的路径的工具。
3
如果你在你的 TEMPLATE_CONTEXT_PROCESSORS
设置中添加 django.core.context_processors.request
,那么在每次使用 RequestContext
渲染模板时(大多数内置模板都是这样),都会自动加入一个叫 request
的变量。这个 request
变量实际上是当前请求的 HTTPRequest
对象,其中的 path
属性就是你请求的路径。想了解更多信息,可以查看 官方文档。