0

是否可以在没有 javascript 的情况下使 django 模板 URL 感知?

例如,我想将 twitter bootstrap 中某个选项卡或药丸的 css 类修改为“活动”。

4

2 回答 2

1

如果您request在上下文中可用,那么您可以在模板中使用request.path来了解 url 并制作 css 类activeinactive基于它。您需要添加django.core.context_processors.requestTEMPLATE_CONTEXT_PROCESSORS的项目设置。

或者,只需传递一个page_name请求上下文并使用它。

正如所arie指出的:检查django-activelink它基本上似乎使用了我提到的上述相同方法,但它在顶部添加了一些模板标签。

于 2013-01-05T10:42:41.887 回答
0

是的,您可以这样做,但是生成的模板代码会有点难以阅读。向模板添加大量逻辑会减少/消除 MVC 的关注点分离优势。

您需要做的是将请求信息传递给模板,最简单的方法是添加模板上下文处理器。在你的 settings.py 中添加这样的内容:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS

TEMPLATE_CONTEXT_PROCESSORS += (
    'django.core.context_processors.request',
)

然后,您可以访问模板中的 request.path 信息并构建逻辑以根据您的需要更改输出。

于 2013-01-05T10:46:51.337 回答