我已经填写了这张表格,我发布了一个名为submitRegistration的应用程序路线,代码如下......但是它返回了一些关于丢失字段的json,它投了500内部服务器错误。任何人都可以评论为什么?
@app.route('/submitRegistration',methods=['POST', 'GET'])
def submitRegistration():
try:
_contactName = request.form['contact_name']
_businessName = request.form['business_name']
_telephone = request.form['telephone']
_email = request.form['email']
_address = request.form['address']
_city = request.form['city']
_state = request.form['state']
_zip = request.form['zip']
_services = request.form['services']
# validate the received values
if _contactName and _email and _telephone and _address and _city and _state and _zip and _services:
# All Good, let's call MySQL
conn = mysql.connect()
cursor = conn.cursor()
cursor.callproc('sp_submitRegistration',(_contactName,_businessName,_telephone,_email,_address,_city,_state,_zip,_services))
data = cursor.fetchall()
# SMS Confirmation
smsClient = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
message = smsClient.messages.create(
body=TWILIO_REG_SMS_MESSAGE,
to=_telephone,
from_=TWILIO_FROM_TELEPHONE,
)
if len(data) is 0:
conn.commit()
return json.dumps({'message':'Registration submitted 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)})
finally:
cursor.close()
conn.close()
控制台输出
WARNING:tornado.access:404 GET /favicon.ico (2620:10d:c091:200::f:c1ec) 24.98ms
ERROR:__main__:Exception on /submitRegistration [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "app.py", line 113, in submitRegistration
cursor.close()
UnboundLocalError: local variable 'cursor' referenced before assignment
ERROR:tornado.access:500 POST /submitRegistration (<IPV6 ADDRESS>) 17.90ms
新的应用路线......
# Functions
@app.route('/submitRegistration',methods=['POST', 'GET'])
def submitRegistration():
try:
_contactName = request.form['contact_name']
_businessName = request.form['business_name']
_telephone = request.form['telephone']
_email = request.form['email']
_address = request.form['address']
_city = request.form['city']
_state = request.form['state']
_zip = request.form['zip']
_services = request.form['services']
# validate the received values
if _contactName and _email and _telephone and _address and _city and _state and _zip and _services != "":
# All Good, let's call MySQL
conn = mysql.connect()
cursor = conn.cursor()
cursor.callproc('sp_submitRegistration',(_contactName,_businessName,_telephone,_email,_address,_city,_state,_zip,_services) )
data = cursor.fetchall()
# SMS Confirmation
smsClient = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
message = smsClient.messages.create(
body=TWILIO_REG_SMS_MESSAGE,
to=_telephone,
from_=TWILIO_FROM_TELEPHONE,
)
if len(data) is 0:
conn.commit()
return json.dumps({'message': 'Registration submitted successfully !'})
cursor.close()
conn.close()
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)})
答案 0 :(得分:0)
这里回答基本上关闭if语句之外的mysql连接创建了超出范围的条件...
更正以下app.route。
# Functions
@app.route('/submitRegistration',methods=['POST', 'GET'])
def submitRegistration():
try:
_contactName = request.form['contact_name']
_businessName = request.form['business_name']
_telephone = request.form['telephone']
_email = request.form['email']
_address = request.form['address']
_city = request.form['city']
_state = request.form['state']
_zip = request.form['zip']
_services = request.form['services']
# validate the received values
if _contactName and _email and _telephone and _address and _city and _state and _zip and _services != "":
# All Good, let's call MySQL
conn = mysql.connect()
cursor = conn.cursor()
cursor.callproc('sp_submitRegistration',(_contactName,_businessName,_telephone,_email,_address,_city,_state,_zip,_services) )
data = cursor.fetchall()
# SMS Confirmation
smsClient = TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
message = smsClient.messages.create(
body=TWILIO_REG_SMS_MESSAGE,
to=_telephone,
from_=TWILIO_FROM_TELEPHONE,
)
if len(data) is 0:
conn.commit()
return json.dumps({'message': 'Registration submitted successfully !'})
cursor.close()
conn.close()
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)})