【问题标题】:Django template filter date not workingDjango模板过滤器日期不起作用
【发布时间】:2015-06-18 20:40:06
【问题描述】:

我在 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 }} 返回一个空字符串。

【问题讨论】:

  • 你能发布你是如何从 views.py 传递变量的吗?原始变量是字符串或日期时间对象吗?
  • 我编辑了问题(两次,我确实忘记了一段代码)

标签: python django django-templates django-filter django-template-filters


【解决方案1】:

您可以在 views.py 中使用 datetime 模块并传递一个 datetime 对象来解决此问题,例如:

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

【讨论】:

  • 谢谢!所以我想传递给模板的数据首先应该是日期类型。我坚持认为 date 过滤器也可以处理传递字符串,但它似乎不是真的。
猜你喜欢
  • 2014-09-28
  • 2020-03-07
  • 2023-03-16
  • 2016-05-20
  • 2011-03-29
  • 2018-05-04
  • 1970-01-01
  • 2023-03-07
相关资源
最近更新 更多