2017-02-13 5 views
0

私の最近のプロジェクトでは、moment.jsの代わりにflask-momentを選択しました。ただし、それは表示され続けるUndefinedError: 'moment' is undefined。私は私のbase.jinja2ファイルの末尾に{{ moment.include_moment() }}を追加すると、それがロードされた成功だフラスコモーメントでモーメントが定義されていません

from config import config 
from exts import babel, db, login_manager, mail, moment 

def create_app(config_name): 

    app = Flask(__name__) 
    app.config.from_object(config[config_name]) 

    ... 

    moment.init_app(app) 

    return app 

は、私はこのようなファクトリパターンを使用しました。私はこのコードの一部が含まれ components.jinja2書いた:

{% macro render_file_thumbnail(file) %} 
<div class=""> 
    <hr> 
    <div class="media"> 
     <div class="media-left"> 
      <a href="{{ url_for('people.profile', user_id=file.uploader.id) }}"> 
       <img class="media-object file-th-avatar img-rounded" src="{{ file.uploader.avatar }}" alt="{{ file.uploader.nickname }}"> 
      </a> 
     </div> 
     <div class="media-body"> 
      <h6 class="file-th-header"> 
       <a href="{{ url_for('file.file_display', page_number=1, file_id=file.id) }}"> 
        {{ file.file_name }} 
       </a> 
      </h6> 
      <p> 
       <span class="text-muted fa fa-fw fa-institution"></span> 
       <a href="{{ url_for('course.course', course_id=file.course.id, page_number=1) }}"> 
        {{ file.course.course_name }} 
       </a> 
       <span class="text-muted fa fa-fw fa-pencil"></span> 
       {{ file.author }} 
       <span class="text-muted fa fa-fw fa-download"></span> 
       {{ file.downloaded_times}} {{ _('time(s)') }} 
       <span class="text-muted fa fa-fw fa-clock-o"></span> 
       {{ moment(file.uploaded_time).fromNow(refresh=True) }} 
      </p> 
     </div> 
    </div> 
</div> 
{% endmacro %} 

私はテンプレートをレンダリングするために、それをインポートして、エラーが出てきます。

ただし、マルコの代わりに{% include %}を使用すると、問題は解決します。だから私はマルコを使い続け、同時に問題を解決できますか?

ありがとうございます!

答えて

1

指示しなかった場合、コンテキストはマクロに渡されません。あなたはそれが動作docthis question

+0

を参照してください

{% from "your_macro_file" import render_file_thumbnail with context %} 

コンテキストでマクロをインポートすることでこの問題を解決することができます。ありがとう! –

関連する問題