2014-01-20 30 views
0

在我的工作中,我们只能访问服务器的前端/模板部分。我绝对不是一个Django程序员,但我很了解这些模板。我们要做的是,根据日期或日期范围,根据日期加载不同的{%extends%}。我能找到的所有例子都是关于如何在后端完成的。我已经尝试了一些想法,都没有奏效:有没有办法根据日期编辑{%extends%}?

{% extends "base"+{% now "Ymd" %} %} 

即使是没有工作,在普通的日子,我想默认为

{% extends "base" %} 

无论如何,这是方法不会做。所以我在想像

{% ifequal {% now "Ymd" %} "20140120" %} 
    {% extends "base2014120" %} 
{% else %} 
    {% extends "base" %} 
{% endifequal %} 

但是,这显然没有工作。我们希望能够提出一些解决方案,因此我不必在午夜时刻登录以手动进行更改。

+0

我没有看到无论如何不访问后端并将“现在”呈现到模板中,或者使用自定义标记/过滤器处理此问题。 – Jingo

+0

好的,你可能比我更了解。任何关于在盒子外思考的想法?例如,做一个重新命名基本模板的工作?我认为这会奏效,但我真的不喜欢它。 –

+0

为了帮助我们开箱即用的思考,您能否向我们提供可供您使用的上下文变量?这是一个远射,但也许其中一个隐藏了一个隐藏的宝石... **编辑:**我不知道是否可以在请求的某个地方的日期...? – meshy

回答

2

免责声明:这是真正的污秽,和一个潜在的安全问题,但如果你绝对相信,你不能获得日期添加到背景,那么我已经找到一种方法。

设置一个包含日期的cookie。

<script type="text/javascript"> 
    document.cookie="datecookie={% now 'Ymd' %}"; 
</script> 

然后,您可以在模板中这样使用这个值:

{% extends 'base'|add:request.COOKIES.datecookie|add:'.html'|default:'base.html' %} 

如果不能设置在页面加载之前的cookie,那么你可以把设置cookie的默认模板和重定向到.。这将创建一个新的请求,并设置cookie。 (虽然我不想在cookies关闭的情况下访问您的网站;)

你有它:我曾经写过的最肮脏的黑客。

更新:我怀疑当你看到你正在缩减到这一点时,你的后端开发人员可能会对你感到遗憾,只是将日期添加到上下文中。

+0

谢谢。我一定会记住这个选项。我们没有任何后端开发者,因为为我们建立系统的公司倒闭了。 –

+0

在这种情况下,我犹豫地建议你看看学习一些后端。您可能会惊讶于django的可用性。它有一个伟大的社区,出色的文档和支持文献,当然堆栈溢出是一个很好的资源。 [django教程](https://docs.djangoproject.com/en/1.6/intro/tutorial01/)是一个很好的开始。完成本教程的第3步后,您应该了解如何向上下文添加内容。如果不是的话,你可以在这里添加另一个问题';)' – meshy

+0

我确实知道很多后端...虽然所有的Perl和PHP,没有Python,我们的设置是建立在Django之上的超定制CMS,我们已经决定放弃它,并且在不需要学习另一种语言/框架的情况下更适合我的经验,这让我们感到沮丧。现在我们只是寻找当前网站的创可贴修复,直到我们创造新的东西。 –

相关问题