Личный кабинет Flask - Python
Формулировка задачи:
Добрый день!
Пытаюсь реализовать вход в личный кабинет.
Схема входа следующая:
* пользователь вводить в форме на странице логин и пароль, нажимает энтер
* после нажатия энтера начинает отрабатываться ajax запрос по jQuery к скрипту на питоне
* далее срабатывает функция validate_user(), которая после запроса в базу отдает true или false
* если false - значит пользователь не валидный и соединение сбарсывается, если true, то выполняется следующий ajax запрос к питоновской функции user_login()
* в этой функции по пользователю собираются все данные (посредством запросов в базу) и далее происходит редирект на страницу personal_account, которая загружает файл private.html, на которой должен отрисоваться прямоугольник на canvas
Проблема заключается в последнем шаге, когда происходит редирект на страницу /personal_account, почему-то URL не меняется,
и не срабатывают js скрипты. При просмотре кода в брузере видно, что private.html отображается, файлы js подключаются. При просмотре кода страницы-отображается код изначальной страницы, с которой был сделан запрос и ее же url.js не находит canvas.
private.html - используются шаблоны jinja2, страница личного кабинета
common.js
Функция validate_user()
И функция user_login()
Используемые технологии: flask, python 2.7, jinja2, ajax, jquery
Подскажите пожалуйста, в чем тут проблема, что неправильно?
Заранее спасибо!
Листинг программы
- {% block tab_content %}
- <canvas width="800" height="600" id="canvas"></canvas>
- <script>
- window.onload = init;
- function init(){
- console.log('работает');
- var canvas = document.getElementById('canvas');
- if (canvas) {
- if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
- ctx.fillRect(25, 25, 100, 100);
- }
- }
- }
- </script>
- {% endblock %}
Листинг программы
- {% block tab_content %}
- <canvas width="800" height="600" id="canvas"></canvas>
- <script>
- window.onload = init;
- function init(){
- console.log('работает');
- var canvas = document.getElementById('canvas');
- if (canvas) {
- if (canvas.getContext) {
- var ctx = canvas.getContext('2d');
- ctx.fillRect(25, 25, 100, 100);
- }
- }
- }
- </script>
- {% endblock %}
Листинг программы
- @app.route('/validate_user', methods=['POST'])
- def validate_user():
- login = request.form['login']
- password = request.form['password']
- try:
- c, conn = cursor_connection()
- c = conn.cursor()
- c.execute("SELECT hsh "
- "FROM auth_info "
- "WHERE login='{}' ; "
- "".format(login, password))
- res = c.fetchall()[0][0]
- c.close()
- conn.close()
- except Exception as e:
- logger.info(msg='Failed to execute /validate_user {}'.format(e))
- return render_template('500.html')
- if check_password_hash(password=password, pwhash=res):
- return jsonify({'result': True})
- return jsonify({'result': False})
Листинг программы
- @app.route('/user_login', methods=['POST'])
- def user_login():
- login = request.form['login']
- if login is None or not login:
- return jsonify(data='Incorrect URL')
- try:
- c, conn = cursor_connection()
- c = conn.cursor()
- c.execute("SELECT accounts_info_uid "
- "FROM auth_info WHERE login='{}' ".format(login))
- id = c.fetchall()
- if not id:
- return jsonify(data='Incorrect login')
- c.execute("SELECT * FROM boxes_id AS tb1 LEFT JOIN"
- " accounts_info AS tb2 ON tb2.boxes_ids=tb1.uid "
- # "LEFT JOIN electricity_info as tb3 ON tb3.boxes_id_uid=tb1.uid"
- " WHERE tb2.uid={} ".format(id[0][0]))
- uid, mc_address, working_status, activation_status, _,\
- first_name, second_name, registration_date, phone, email, boxes_id = c.fetchall()[0]
- c.execute(" SELECT consumed_electricity "
- "FROM electricity_info "
- "WHERE boxes_id_uid={} ".format(boxes_id))
- consumed_electricity = [float(val[0]) for val in c.fetchall()]
- c.close()
- conn.close()
- except Exception as e:
- logger.error(msg='Cannot execute /user_login {}'.format(e))
- return str(e)
- user = User()
- user.id = login
- login_user(user)
- return redirect(url_for('welcome'))
Решение задачи: «Личный кабинет Flask»
textual
Листинг программы
- @app.route('/welcome')
- def welcome():
- return render_template('private.html')
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д