2015-09-25 32 views
-1

我一直在學習如何使用Flask框架使用教程,但我的app.py中的代碼不斷返回錯誤500,我找不到原因(我的代碼是相同的到教程)。Flask應用程序不斷返回錯誤500

這裏的app.py:

from flask import Flask, render_template, json, request 
from flask.ext.mysql import MySQL 
from werkzeug import generate_password_hash, check_password_hash 

mysql = MySQL() 
app = Flask(__name__) 

# MySQL configurations 
app.config['MYSQL_DATABASE_USER'] = 'root' 
app.config['MYSQL_DATABASE_PASSWORD'] = 'root' 
app.config['MYSQL_DATABASE_DB'] = 'BucketList' 
app.config['MYSQL_DATABASE_HOST'] = 'localhost' 
mysql.init_app(app) 


@app.route('/') 
def main(): 
    return render_template('index.html') 

@app.route('/showSignUp') 
def showSignUp(): 
    return render_template('signup.html') 


@app.route('/signUp',methods=['POST','GET']) 
def signUp(): 
    try: 
     _name = request.form['inputName'] 
     _email = request.form['inputEmail'] 
     _password = request.form['inputPassword'] 

     # validate the received values 
     if _name and _email and _password: 

      # All Good, let's call MySQL 

      conn = mysql.connect() 
      cursor = conn.cursor() 
      _hashed_password = generate_password_hash(_password) 
      cursor.callproc('sp_createUser',(_name,_email,_hashed_password)) 
      data = cursor.fetchall() 

      if len(data) is 0: 
       conn.commit() 
       return json.dumps({'message':'User created successfully !'}) 
      else: 
       return json.dumps({'error':str(data[0])}) 
     else: 
      return json.dumps({'html':'<span>Enter the required fields</span>'}) 

    except Exception as e: 
     return json.dumps({'error':str(e)}) 
     return traceback.format_exc() 
    finally: 
     cursor.close() 
     conn.close() 

if __name__ == "__main__": 
    app.run(port=5002) 

這是一個註冊系統。

+2

之前'app.run'在'if'塊添加'app.debug = TRUE'會給你更多的信息。 –

回答

1

一個500錯誤通常意味着在你的Python,而不是當您運行試試withh app.run(port=5002,debug=True)這不會解決你的問題的錯誤...但它應該告訴你什麼在

1

去我知道你在這之後教程,因爲我有同樣的問題 - http://code.tutsplus.com/tutorials/creating-a-web-app-from-scratch-using-python-flask-and-mysql--cms-22972

的問題是,在存儲過程裏面他們有您設置大小20列:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createUser`(
    IN p_name VARCHAR(20), 
    IN p_username VARCHAR(20), 
    IN p_password VARCHAR(20) 
) 

但是當他們告訴你鹽日在你的Python代碼E密碼,像你這樣的:

_hashed_password = generate_password_hash(_password) 

您正在創建一個字符串超過20個字符更長的時間,所以如果你在調試模式下你會看到錯誤跑這說的列密碼無效列長度。我通過將列的大小更改爲100來解決此問題。:)

0

我知道本教程,並且我在幾分鐘前收到同樣的錯誤。 我改變 -

_hashed_password = generate_password_hash(_password) 

_hashed_password = _password 

和它的工作! :)。

我假設原因是我們聲明的密碼字段的大小小於實際需要的大小,如果我們散列。但現在,你可以做同樣的事情,讓應用程序運行。

快樂編碼!

相關問題