在模板中读取路径

3 投票
3 回答
2249 浏览
提问于 2025-04-15 18:24

有没有办法读取当前页面的路径呢?比如说,我现在在 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 属性就是你请求的路径。想了解更多信息,可以查看 官方文档

撰写回答