2017-02-18 5 views
0

В нижней части моего base.html Я пытаюсь создать include файл .html, который динамически генерируется. Поэтому, чтобы сделать это, я вызываю файл .js, который делает запрос GET на эту конечную точку. Взглянуть;Включить динамически сгенерированный контент

# _base.html 
<!DOCTYPE html> 
<html lang="en"> 
<head> ... 
<script type=text/javascript src="{{url_for('static', filename='js/recent_posts.js') }}"></script> 
</head> 
<body>... 
{% block content %}{% endblock %} 
... 
{% include 'recent_posts.html' %} 
</body> 
</html> 

# recent_posts.js  
$(function() { 
    $.ajax({ 
     url: '/recent_posts', 
     type: 'GET' 
    }); 
}); 

# view for recent_posts 
... 
@recentPosts_blueprint.route('/recent_posts', methods=['GET']) 
def recent_posts(): 
    vacation = Vacation.query.all() 
    return render_template('recent_posts.html', vacation=vacation) 


# recent_post.html 
... 
<h3>Recent Posts</h3> 
{{ vacation }} 
... 

При загрузке страницы я только получить </h3> теги и текст, но не данные

Почему? и как я могу это сделать?

ответ

0

Таким образом, без дублирования кода после некоторого чтения документации я нашел решение. Я поместил код в функцию под funcs.py и добавил к глобальным.

def recent_posts(): 
    data = [] 
    data_list = [] 
    vacation = Vacation.query.all() 
    return vacation 

app.jinja_env.globals.update(recent_posts=recent_posts) 

И в __init__.py я добавил func.py: from project.funcs import funcs Так что теперь я могу сделать {% set data = recent_posts() %} в _base.html или где-нибудь еще, и он будет работать функцию и получить мои результаты обратно на базу.

Смежные вопросы