Django模板 - 是否可以制作网址感知模板

时间:2013-01-05 10:35:57

标签: django django-templates

是否可以在不使用javascript的情况下识别django模板URL?

例如,我想在twitter bootstrap中为某个标签或药丸修改css类为“active”。

2 个答案:

答案 0 :(得分:1)

如果您在上下文中提供了request,那么您可以在模板中使用request.path来了解网址,并根据该网址制作css类activeinactive。 您需要在项目设置中的django.core.context_processors.request中添加TEMPLATE_CONTEXT_PROCESSORS

或者只是在请求上下文中传递page_name并使用它。

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

答案 1 :(得分:0)

是的,你可以这样做,但结果模板代码将有点难以阅读。在模板中添加大量逻辑可以减少/消除MVC的关注点分离优势。

您需要做的是将请求信息传递给模板,最简单的方法是添加模板上下文处理器。在settings.py中加入类似的东西:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS

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

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