这件事我绞尽脑汁已经一个小时了,没有任何解决办法。 我试图将AJAX post方法作为课程的一部分,我甚至尝试过一点一点地复制讲师代码,但每次都会遇到相同的错误
我的Python3代码:
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask import request, jsonify
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://postgres:1999@localhost:5432/crud'
db = SQLAlchemy(app)
class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True)
description = db.Column(db.String(), nullable=False)
def __repr__(self):
return f'<Todo {self.id}{self.description}>'
db.create_all()
@app.route('/create', methods=['POST'])
def create_todo():
description = request.get_json()['description']
todo = Todo(description=description)
db.session.add(todo)
db.session.commit()
return jsonify({
'description': todo.description
})
@app.route('/')
def index():
return render_template("index.html", data=Todo.query.all())
我的HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.hidden {
display: none;
}
</style>
</head>
<body>
<form id="form">
<input type="text" id="description" name="description"/>
<input type="submit" value="Create">
</form>
<div id="error" class="hidden">Something went wrong!</div>
<ul id="todo">
{% for item in data %}
<li>{{item.description}}</li>
{% endfor %}
</ul>
<script>
let desc =document.getElementById('description').Value;
document.getElementById('form').onsubmit = function(e){
e.preventDefault();
fetch('/create',{
method: 'POST',
body: JSON.stringify({
'description': desc
}),
headers: {
'content-type': 'application/json'
}
})
.then(function(response){
return response.json();
})
.then(function (jsonresponse){
console.log(jsonresponse);
const item = document.createElement('Li');
item.innerHTML = jsonresponse['description'];
document.getElementById('todo').appendChild(item);
document.getElementById('error').className ='hidden';
})
.catch(function (){
document.getElementById('error').className ='';
})
}
</script>
</body>
</html>
我在VS代码中遇到的错误:
[2021-02-09 11:08:56,508] ERROR in app: Exception on /create [POST]
Traceback (most recent call last):
File "c:\python39\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "c:\python39\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\python39\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "c:\python39\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "c:\python39\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "c:\python39\lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\AmrFa\Desktop\Courses\CRUD\app.py", line 24, in create_todo
description = request.get_json()['description']
KeyError: 'description'
127.0.0.1 - - [09/Feb/2021 11:08:56] "POST /create HTTP/1.1" 500 -
我不知道该怎么办,也不知道该往哪里走,我被困在这个问题上了
目前没有回答
相关问题 更多 >
编程相关推荐