2017-02-13 58 views
0

在我最近的項目中,我選擇了flask-moment而不是moment.js。但是,它一直在出現UndefinedError: 'moment' is undefined時刻在瓶子時刻未定義

我使用工廠模式是這樣的:

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 

我不添加{{ moment.include_moment() }}base.jinja2文件的末尾,它的成功加載。我寫了一個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 %}而不是marco,問題就解決了!那麼我該如何繼續使用marco並同時解決這個問題呢?

謝謝!

回答

1

如果您沒有指示上下文,則不傳遞給宏。您可以通過導入與宏觀背景下

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

解決這個問題請參考docthis question

+0

它的工作原理。謝謝! –