データをpython(フラスコを使用)に送信して、postgresqlテーブルを追加データで更新するためのajax呼び出しを行います。私のローカルマシンにはエラーはありませんが、私がHerokuにデプロイすると、次のようになります。 'NoneType'オブジェクトには属性 'first_name'がありません。 ボタンを数回クリックすると、それが通過します。このエラーにどう対処しますか?AJAX受信後NoneなしHerokuのSQLAlchemyにデータを渡すときにローカル
私は1つの変数だけを含むようにコードを単純化しました。 ここにajax呼び出しがあります。
$(document).ready(function() {
$('form').on('submit', function(event) {
var first_name = $('#first_name').val()
$.ajax({
data : {
first_name : first_name,
},
type : 'POST',
url : '/process'
})
.done(function(data) {
window.location.href = "/page2"
});
event.preventDefault();
});
});
これは、私がSQLAlchemyを使用してPythonで更新しようとしているものです。
@app.route('/process', methods=['POST'])
def page2_process():
global app_id
update = Data1.query.filter_by(id = app_id).first()
update.first_name = request.form.get('first_name')
db.session.commit()
return json.dumps({'success': True}), 200, {'ContentType':'application/json'}
私は試しました:request.form ['first_name']私はまだ同じ問題があります。
ご協力いただければ幸いです。
要求通りにログを追加する: ログの最初の行は、更新オブジェクトが空ではないことを示すログです。それはData1からのオブジェクト18を持っているからです。
<Data1 18>
[2017-10-26 06:58:25,886] ERROR in app: Exception on /page2_process [POST]
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",
line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",
line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",
line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/app/.heroku/python/lib/python3.6/site-packages/flask/_compat.py",
line 33, in reraise
raise value
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py",
line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line
1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/app/app.py", line 396, in page2_process
update.first_name = request.from.get('first_name')
AttributeError: 'NoneType' object has no attribute 'first_name'
で属性にアクセスすることができますが確認してください'first_name'属性にアクセスする前に' request.get_data() 'が空ではありません – lalithkumar
このデータは私のローカルでは空ではありません。もし私がherokuで複数回submitを押すと、それは通ります。それが空だと思う。また、私はrequest.get_data()が何を意味するのかよくわかりません。それはrequest.form.get()の代替ですか? – Dave
私は 'update = Data1.query.filter_by(id = app_id).first()'と、実際に 'None'を返すかどうかをチェックしたいと思います。また、ヘルプが必要な場合は、例外オブジェクトのメッセージだけでなく、*完全なトレースバック*を提供してください。 wsgi_app 応答= self.full_dispatch_request() "/app.py"、ライン1614で –