2017-01-14 5 views
2

Я использую Python с Flask и Jinja2, и я пытаюсь реализовать боковую панель. На HTML-страницах у меня есть это:Получение данных с сервера на нескольких страницах приложения Flask

{% include "sidebar.html" %} 

Что я хочу в файле боковой панели, чтобы иметь блок из последних пользователей. Для этого мне нужно получить результаты с сервера для файла sidebar.html. Но где я должен писать код для этого в файле python?

ответ

1

, как вы могли бы реализовать эту функциональность путем создания переменной дзиндзя на стороне питона:

app = Flask(__name__) 

app.jinja_env.globals.update({ 
    'latest_users': get_latest_users() 
}) 

def get_latest_users() { 
    return ['Mark', 'Jane', 'Sally'] 
} 

Переменная latest_users теперь могут быть доступны из любого шаблона Джинджя просто выполнив:

{% for user in latest_users %} 
    <p>{{ user }}</p> 
{% endfor %} 
+0

бы я должен поставить globals.update битых несколько раз для нескольких переменных? –

+0

'app.jinja_env.globals.update()' принимает словарь как аргумент, что означает, что вы можете добавить несколько пар значений ключа. –

0

Вы можете передавать переменные в шаблоны. При использовании include переменных по-прежнему может быть использован в этом включена части тоже:

@app.route('/') 
def index(): 
    users = ['user1', 'user2'] 
    debug = False 
    render_template('index.html', users=users, debug=debug) 

# index.html 
{% include "sidebar.html" %} 

#sidebar.html 
{% for user in users %} 
    <p>{{ user }}</p> 
{% endfor %} 
{{debug}} 
+0

Будут ли эти переменные в индексе работать для боковой панели на других страницах? –

+0

Да, но вместо 'index.html' вы должны написать этот html-файл' render_template ('other.html', users = users, debug = debug) '. Теперь, если вы включите 'sidebar.html' в' other.html', вы можете использовать эти переменные 'users',' debug' – metmirr