首页 文章

Django模板过滤日期不起作用

提问于
浏览
1

我在django 1.4上 .

我将 MY_VAR 变量传递给home.html模板 .
代码显示简化了 . 这是 urls.py

import home
urlpatterns = patterns('',
    # homepage
    url(r'^/?$', home.Home.as_view(), name='home'),
)

和视图 home.py

from django.conf import settings     

class Home(TemplateView):
    """ this view serves the home template """
    template_name = 'home.html'

    def get_context_data(self, *args, **kwargs):

        data = {
            'MY_VAR': setting.MY_VAR # where MY_VAR defined in settings.py is a string '2014-12-31'
        }

        retun data

我有一个模板变量,然后我嵌入js:

<!-- source code of home.html --> 
<script type="text/javascript" charset="utf-8">
   var myVar = '{{ MY_VAR }}'
</script>

MY_VAR 的格式为 '2014-12-31' . 如果我不使用任何过滤器,那么事情就会起作用,这意味着上面的代码会产生这样的:

<!-- computed home.html --> 
<script type="text/javascript" charset="utf-8">
   var myVar = "2014-12-31";
</script>

但我想要一个不同的日期格式,所以如果我使用 date 过滤器作为这个

var myVar = '{{ MY_VAR|date }}'
// or
var myVar = "{{ MY_VAR|date:'d-m-Y' }}"

无论我传递给日期过滤器,我总是得到一个空字符串 var myVar = '' . 此外,没有任何格式化参数的默认 {{ MY_VAR|date }} 返回空字符串 .

1 回答

  • 1

    您可以使用datetime模块在views.py中修复此问题并传递datetime对象,如:

    from datetime import datetime
    ...
    data = {
            'MY_VAR': datetime.strptime(settings.MY_VAR, "%Y-%m-%d"), 
             ....
            }
    return data
    

相关问题