Я не могу заставить работать мой регистрационный код пользователя фляги, что я делаю не так? - PullRequest
0 голосов
/ 25 мая 2018

я начал изучать флешку всего несколько дней назад, так что я знаю, что это может быть не лучший код, который вы видели до сих пор, моя главная цель на данный момент - просто получить мои данные в базу данных.найдите мой код ниже

from flask import Flask, session, redirect, url_for, escape, request, render_template
from hashlib import md5
from dbConnect import connection
import MySQLdb
from MySQLdb import escape_string as thwart
import gc
app = Flask(__name__)
#database conn
conn = MySQLdb.connect(host="localhost", user="root", password="jccofficial", db="test")
cur = conn.cursor()
#registration handling
@app.route('/register/', methods=["GET","POST"])
def register_page():

   return render_template('register.html')
   try:

     if request.method == "POST":
        username  = request.form['username']
        email = request.form['email']
        password = request.form['password']


        x = cur.execute("SELECT * FROM users WHERE username = (%s)",
                      (username))

        if int(x) > 0:
            flash("That username is already taken, please choose another")
            return render_template('register.html', form=form)

        else:
            cur.execute("INSERT INTO users (username,email,password,)VALUES (%s,%s,%s)", (username, email, password))

            conn.commit()
            flash("Thanks for registering!")
            cur.close()
            conn.close()                
            session['logged_in'] = True
            session['username'] = username

            return redirect(url_for('dashboard'))

      return render_template("register.html", form=form)
   except Exception as e:
    return(str(e))

Я установил и подтвердил, что моя БД работает, вручную вставляя в нее данные. Однако я не знаю, как проверить, что моя форма действительно публикует входные данные.

1 Ответ

0 голосов
/ 25 мая 2018

Как отметил Клаус Д. в комментариях, вы открываете свое соединение с БД глобально, а затем закрываете его в своей функции.

Другое дело, что в вашей функции register_page вы немедленно возвращаете шаблон return render_template('register.html'), это означает, что весь ваш другой код в функции недоступен.Это никогда не будет работать!Вы, вероятно, хотите переместить этот возврат или убедиться, что он работает только на основании какого-либо условия.

Наконец, я вижу, что вы храните пароли в незашифрованном виде.Это может помочь вам в обучении, но это большой грех программирования - хранить пароли в открытом виде!См. , почему я должен хэшировать пароли .Даже простое хеширование не так уж хорошо.Обычно вам нужна функция выведения сильного ключа, например hashlib.pbkdf2_hmac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...