데이터를 python (플라스크 사용)으로 보내 ajax 호출을 통해 postgresql 테이블을 추가 데이터로 업데이트합니다. 내 로컬 컴퓨터에는 오류가 없습니다. 그러나 Heroku에 배포하면 다음과 같이 나타납니다. 'NoneType'개체에 'first_name'특성이 없습니다. 버튼을 몇 번 클릭하면 처리됩니다. 이 오류를 어떻게 해결합니까?AJAX 수신 후 NoneType Heroku에서 SQLAlchemy에 데이터를 전달할 때 로컬에서 문제가 없습니다.
나는 하나의 변수 만 포함하도록 코드를 단순화했습니다. 다음은 아약스 호출입니다.
$(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를 사용하여 파이썬에서 업데이트하려고하는 것입니다.
@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 –