【问题标题】:Reading path in templates [duplicate]模板中的阅读路径[重复]
【发布时间】:2011-01-08 20:01:27
【问题描述】:

有没有办法读取当前页面的路径?例如,我在 www.example.com/foo/bar/ - 我想阅读“/foo/bar/”。我必须在模板文件中执行此操作而不修改视图,而且我有太多视图文件无法编辑每个文件。

干杯。

【问题讨论】:

  • 这个问题以前是怎么问的,当副本是从 2010 年 5 月开始的,而这个问题是从 2010 年 1 月开始的?首先是什么?

标签: python django django-templates


【解决方案1】:

如果您将django.core.context_processors.request 添加到您的TEMPLATE_CONTEXT_PROCESSORS 设置,它会将request 变量添加到每个使用RequestContext(这是大多数内置的)的模板渲染中。这是当前请求的HTTPRequest 对象,其path 属性是请求的路径。更多信息可以在in the docs找到。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      我最终使用了它,但在此过程中遇到了一点小问题。这是我的解决方案路径,希望能为别人节省一些时间。

      起初我将这一行添加到我的 settings.py 文件中:

      TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.request",)
      

      我发现它允许我通过使用模板变量{{ request.path }} 从已传递RequestContext 的模板中访问请求路径。但是,它也禁用了所有其他上下文处理器。为了解决这个问题,我尝试将默认值添加到 TEMPLATE_CONTEXT_PROCESSORS 元组。起初这失败了,因为我使用了 Django 1.2 的上下文处理器(我安装了 Django 1.1)。解决该问题后,我得到了以下设置文件:

      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",
       )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-08
        • 2018-08-25
        • 2015-10-06
        相关资源
        最近更新 更多