Я установил простое веб-приложение, используя Flash / AngularJS и socket.io.У меня есть страница администратора, защищенная паролем и имеющая серверную часть MySQL, которая заполняет страницу настроек при успешной аутентификации.Я столкнулся с проблемой, когда при первой загрузке страницы ничего не заполняется до тех пор, пока я не обновлю страницу браузера.
Из моего app.py:
@app.route('/admin')
def admin():
"""
Called when we successfully navigate to the administrative settings page
:return: Flask.render_template, corresponding either to login.html or admin.html (depending on if credentials
were valid)
"""
global default_settings
my_logger.info('============= PAGE LOADED: settings')
# Refreshes default settings to make sure it is up to date with DB
default_settings = db_get_saved()
# If we have been logged out by the scan page, forces user to re-enter credentials
if not session.get('logged_in') and default_settings['user_pw'] != '':
return render('login.html', request.path)
# Otherwise renders the admin.html page
else:
return render('admin.html', request.path)
def render(template, path):
"""
Called by our Flask app when a new page is loaded. Renders corresponding HTML document
:param template: string, name of the HTML document to be rendered
:param path: string, path of this document
:param logo_menu: company logo to be displayed on front page in the menu bar
:param logo_footer: company logo to be displayed on front page in footer
:return: Flask.render_template, corresponds to the passed in parameters
"""
my_logger.info('Rendering page: ' + template)
logo = ''
if default_settings["company_logo"] != '':
logo = '/static/uploads/' + default_settings["company_logo"]
return render_template(template, app_name='My App', menu=create_menu(path), user_js='admin',
logo=logo)
Однажды страницарендеринг, форма должна быть заполнена с помощью функции в app.py, которая называется fe_get_settings, которая вызывается из angular_controller.js:
// ----------------------- Socket Event Handlers
socket.on('connect', function() {
/*
Listens for initial connect message from the socketio server. When connection occurs, requests default settings
from the DB
*/
socket.emit('fe_get_settings');
});
Опять все работает, но только после того, как я загружаю страницу администратора и затем обновляюЭто.Любое понимание этого будет с благодарностью!