Личный кабинет 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, страница личного кабинета
Листинг программы
  1. {% block tab_content %}
  2. <canvas width="800" height="600" id="canvas"></canvas>
  3. <script>
  4. window.onload = init;
  5. function init(){
  6. console.log('работает');
  7. var canvas = document.getElementById('canvas');
  8. if (canvas) {
  9. if (canvas.getContext) {
  10. var ctx = canvas.getContext('2d');
  11. ctx.fillRect(25, 25, 100, 100);
  12. }
  13. }
  14. }
  15. </script>
  16. {% endblock %}
common.js
Листинг программы
  1. {% block tab_content %}
  2. <canvas width="800" height="600" id="canvas"></canvas>
  3. <script>
  4. window.onload = init;
  5. function init(){
  6. console.log('работает');
  7. var canvas = document.getElementById('canvas');
  8. if (canvas) {
  9. if (canvas.getContext) {
  10. var ctx = canvas.getContext('2d');
  11. ctx.fillRect(25, 25, 100, 100);
  12. }
  13. }
  14. }
  15. </script>
  16. {% endblock %}
Функция validate_user()
Листинг программы
  1. @app.route('/validate_user', methods=['POST'])
  2. def validate_user():
  3. login = request.form['login']
  4. password = request.form['password']
  5. try:
  6. c, conn = cursor_connection()
  7. c = conn.cursor()
  8. c.execute("SELECT hsh "
  9. "FROM auth_info "
  10. "WHERE login='{}' ; "
  11. "".format(login, password))
  12. res = c.fetchall()[0][0]
  13. c.close()
  14. conn.close()
  15. except Exception as e:
  16. logger.info(msg='Failed to execute /validate_user {}'.format(e))
  17. return render_template('500.html')
  18. if check_password_hash(password=password, pwhash=res):
  19. return jsonify({'result': True})
  20. return jsonify({'result': False})
И функция user_login()
Листинг программы
  1. @app.route('/user_login', methods=['POST'])
  2. def user_login():
  3. login = request.form['login']
  4. if login is None or not login:
  5. return jsonify(data='Incorrect URL')
  6. try:
  7. c, conn = cursor_connection()
  8. c = conn.cursor()
  9. c.execute("SELECT accounts_info_uid "
  10. "FROM auth_info WHERE login='{}' ".format(login))
  11. id = c.fetchall()
  12. if not id:
  13. return jsonify(data='Incorrect login')
  14. c.execute("SELECT * FROM boxes_id AS tb1 LEFT JOIN"
  15. " accounts_info AS tb2 ON tb2.boxes_ids=tb1.uid "
  16. # "LEFT JOIN electricity_info as tb3 ON tb3.boxes_id_uid=tb1.uid"
  17. " WHERE tb2.uid={} ".format(id[0][0]))
  18. uid, mc_address, working_status, activation_status, _,\
  19. first_name, second_name, registration_date, phone, email, boxes_id = c.fetchall()[0]
  20. c.execute(" SELECT consumed_electricity "
  21. "FROM electricity_info "
  22. "WHERE boxes_id_uid={} ".format(boxes_id))
  23. consumed_electricity = [float(val[0]) for val in c.fetchall()]
  24. c.close()
  25. conn.close()
  26. except Exception as e:
  27. logger.error(msg='Cannot execute /user_login {}'.format(e))
  28. return str(e)
  29. user = User()
  30. user.id = login
  31. login_user(user)
  32. return redirect(url_for('welcome'))
Используемые технологии: flask, python 2.7, jinja2, ajax, jquery Подскажите пожалуйста, в чем тут проблема, что неправильно? Заранее спасибо!

Решение задачи: «Личный кабинет Flask»

textual
Листинг программы
  1. @app.route('/welcome')
  2. def welcome():
  3.     return render_template('private.html')

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут