【问题标题】:Flask 和 Python sqlite3 集成中的错误
【发布时间】:2022-01-23 12:39:48
【问题描述】:

好的! 所以,我正在为我最近开发的一个网站创建一个简单登录程序!我正在使用 Flask 来提供我的 HTML 页面模板.... 我正在使用 sqlite3 Python 模块以便于使用模块...

所以,我为我的主网​​站创建了一个 App Route 用于登录页面。您可以查看以下代码:

def login():
    msg = ''
    
    if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
        # Create variables for easy access
        username = request.form['username']
        password = request.form['password']

        #Connection Est.
        connection = sqlite3.connect("Users.db")

        #cursor
        USer_crsr = connection.cursor()

        user_cm = """SELECT username, password FROM accounts"""

        USer_crsr.execute(user_cm)
        USer_result = USer_crsr.fetchall()

        if username and password in USer_result:
            # Create session data, we can access this data in other routes
              session['loggedin'] = True
              session['id'] = USer_result['id']
              session['username'] = USer_result['username']
              # Redirect to home page
              return 'Logged in successfully!'
        else:
            # Account doesnt exist or username/password incorrect
            msg = 'Incorrect username/password!'
    return render_template("login.html", msg=msg)

我运行我的程序,我没有收到任何错误!我打开我的登录页面,页面打开时没有出现错误!这是页面外观: Login Page

但是当我提交表单时,我收到一个错误(不是在控制台中,而是在网页本身中): 405 - Method Not allowed!

另外,这是我用来创建数据库的数据库文件的代码:


#Connection to FILE
User_DATA_connection = sqlite3.connect('Users.db')

crsr = User_DATA_connection.cursor()

#command here
command = """CREATE TABLE IF NOT EXISTS 'accounts' (
  'id' int(11) NOT NULL,
  'username' varchar(50) NOT NULL,
  'password' varchar(250) NOT NULL,
  'email' varchar(100) NOT NULL,
  PRIMARY KEY ('id')
) 
"""

#execute
crsr.execute(command)

comm = """INSERT INTO accounts VALUES (1, 'test', 'test', 'test@gmail.com');"""

crsr.execute(comm)

User_DATA_connection.commit()

#close data
User_DATA_connection.close()

【问题讨论】:

标签: python python-3.x sqlite flask flask-login


【解决方案1】:

当你装饰你的 Flask 路由的函数时,你需要允许 POST 方法。 示例:

@app.route('/login', methods=["GET", "POST"])
def login():
    if request.method == "GET":
        # Render your page
    if request.method == "POST":
        # Process the data you POST-ed from your frontend (insert them into the DB, etc.)

【讨论】:

  • 好的,我试试看……
  • 它有效,但是当我已经将值“测试”插入“用户名”和“密码”字段时,它会显示消息“用户名/密码不正确!”.....是还有什么问题吗?
  • 似乎您错误地将数据库中的值与您在登录表单中使用的值进行了比较。我会尝试在您的代码中查看if username and password in USer_result:
  • 我不明白你在这里想说什么......
  • 如果您确实使用正确的凭据登录(测试、测试),那么您似乎错误地将登录表单中写入的值与数据库中的数据进行比较。
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 2015-10-16
相关资源
最近更新 更多