2013-06-09 6 views
2

템플릿 내 내 날짜 값에 대한 datetime 필터를 만들려면이 solution을 따르려고합니다. babel을 사용하는 이점은 i18n이됩니다.Flask 응용 프로그램에서 Jinja 필터를 사용하는 방법?

내가 내 응용 프로그램 패키지에 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를로드하기 위해

from f11_app import views, filters 

: 내 f11_app__init__.py의 마지막 줄은 이것이다 내가 뭘 놓칠 수 있니?

답변

6

format_datetime 방법이 babel 모듈에 없었기 때문입니다. babel.dates.format_datetime 또는 flask.ext.babel.format_datetime을 사용해야합니다. 참조 : http://babel.edgewall.org/wiki/Documentation/0.9/dates.htmlhttp://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) 
+0

예, 나는 많은 감사 'format_date을 가져 babel.dates에서'대신 잘못된 네임 스페이스'수입 babel'를 사용했다 : 당신은 또한 필터 with decorator을 추가 할 수 있습니다

Houman

관련 문제