5

テンプレート内の日付値の日時フィルターを作成するために、このソリューションに従おうとしています。babel を使用する利点は、i18n です。

アプリケーション パッケージの filter.py というファイルにコードを挿入しました。

from f11_app import app
import babel

def format_datetime(value, format='medium'):
    if format == 'full':
        format="EEEE, d. MMMM y 'at' HH:mm"
    elif format == 'medium':
        format="EE dd.MM.y HH:mm"
    return babel.format_datetime(value, format)

app.jinja_env.filters['datetime'] = format_datetime  

今私が得るエラーは次のとおりです。

File "/home/kave/projects/F11/Engineering/f11_app/templates/show_records.html", line 19, in block "body"

<td>{{ record.record_date|datetime }}

File "/home/kave/projects/F11/Engineering/f11_app/filters.py", line 9, in format_datetime

AttributeError: 'module' object has no attribute 'format_datetime'

filters.py をロードするために、私f11_appの の最後の行__init__.pyは次のとおりです。

from f11_app import views, filters

何が欠けているのでしょうか?

4

1 に答える 1

9

これは、babelモジュールにメソッドがなかったためですformat_datetimebabel.dates.format_datetimeまたはを使用する必要がありますflask.ext.babel.format_datetimehttp://babel.edgewall.org/wiki/Documentation/0.9/dates.htmlおよびhttp://pythonhosted.org/Flask-Babel/#formatting-datesを参照してください。

デコレータでフィルタを追加することもできます:

@app.template_filter('datetime')
def format_datetime(value, format='medium'):
    if format == 'full':
        format="EEEE, d. MMMM y 'at' HH:mm"
    elif format == 'medium':
        format="EE dd.MM.y HH:mm"
    return babel.format_datetime(value, format)
于 2013-06-10T09:40:28.123 に答える