Python - Google App Engine - Методы в шаблоне Django - PullRequest
2 голосов
/ 01 ноября 2011

Я пришел из опыта программирования на Rails.

Я пишу приложение на Python в Google App Engine с помощью шаблонов Django.

Я не могу вызвать strftime ("% I:% M% p") для даты и времени.

В моем файле main.py у меня есть:

import datetime
....
class Report(db.Model):
    date = db.DateTimeProperty(auto_now_add = True)

Я передаю все отчеты в шаблон и в шаблоне, который у меня есть:

{% for report in reports %}
<tr>
    <td>{{ report.date.strftime("%I:%M %p") }}</td>
</tr>
{% endfor %}

Я знаю, что у меня есть объект datetime, потому что я могу сделать:

{{ report.date.day }} 

или

{{ report.date.minute }} 

Просто отлично, и они возвращают то, что должны вернуть.

Когда у меня есть:

 {{ report.date.strftime("%I:%M %p") }}

Я получаю ошибку:

raise TemplateSyntaxError, "Could not parse the remainder: %s" % token[upto:] TemplateSyntaxError: Could not parse the remainder: ("%I:%M %p")

Как мне заставить работать strftime?

Ответы [ 2 ]

5 голосов
/ 01 ноября 2011

Механизм шаблонов Django не поддерживает передачу аргументов таким методам.Чтобы выполнить то же самое, попробуйте использовать фильтр date :

{{ report.date|date:"f A" }}

(Отредактировано: исправлен синтаксис для строки даты, потому что я тупой.)

1 голос
/ 21 февраля 2012

Система шаблонов Django « предназначена для выражения презентации, а не логики программы », поэтому «это не просто Python, встроенный в HTML».

Только теги и фильтры поддерживаютсядефолт.Вот почему вам нужно было найти фильтр, аналогичный функции, на которую вы указали, как это сделал @Dougal.Другой вариант - сделать пользовательский шаблонный тег или фильтры , но в этом случае это будет излишним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...