1

Я на django 1.4.Django шаблон фильтра дата не работает

Передача переменной 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 

У меня есть переменная шаблона, я затем встраивать в ЯШ:

<!-- 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 }} без какого-либо параметра форматирования возвращает пустую строку.

+0

Не могли бы вы опубликовать, как вы передаете переменную из views.py? Является ли исходная переменная строкой ou datetime? – RafaelC

+0

Я отредактировал вопрос (дважды, я забыл кусок кода) – Leonardo

ответ

1

Вы можете решить эту проблему с помощью модуля views.py DATETIME и передавая объект типа DateTime, как:

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

Спасибо! Поэтому я полагаю, что данные, переданные в шаблон, должны иметь тип даты в первую очередь. Мне сложно, что передача строки будет обрабатываться также фильтром 'date', но, похоже, это не так. – Leonardo

Смежные вопросы