【发布时间】:2021-09-17 15:45:35
【问题描述】:
我知道这似乎是一个愚蠢的问题,但我挖了又挖,找不到任何似乎可以解决问题的答案。
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.sqlite')
db = SQLAlchemy(app)
ma = Marshmallow(app)
class Guide(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), unique=False)
content = db.Column(db.String(144), unique=False)
def __init__(self, title, content):
self.title = title
self.content = content
class GuideSchema(ma.Schema):
class Meta:
fields = ('title', 'content')
guide_schema = GuideSchema()
guides_schema = GuideSchema(many=True)
# Endpoint to create a new guide
@app.route('/guide', methods=["POST"])
def add_guide():
title = request.json['title']
content = request.json['content']
new_guide = Guide(title, content)
db.session.add(new_guide)
db.session.commit()
guide = Guide.query.get(new_guide.id)
return guide_schema.jsonify(guide)
# endpoint to query all guides
@app.route('/guides', methods=["GET"])
def get_guides():
all_guides = Guide.query.all()
result = guides_schema.dump(all_guides)
return jsonify(result.data)
if __name__ == '__main__':
app.run(debug=True)
完整追溯:
Traceback (most recent call last):
File "/Users/bmoney/Documents/python_projects/flask-practice/venv/lib/python3.9/site-packages/flask/app.py", line 2088, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/bmoney/Documents/python_projects/flask-practice/venv/lib/python3.9/site-packages/flask/app.py", line 2073, in wsgi_app
response = self.handle_exception(e)
File "/Users/bmoney/Documents/python_projects/flask-practice/venv/lib/python3.9/site-packages/flask/app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "/Users/bmoney/Documents/python_projects/flask-practice/venv/lib/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/bmoney/Documents/python_projects/flask-practice/venv/lib/python3.9/site-packages/flask/app.py", line 1513, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/bmoney/Documents/python_projects/flask-practice/venv/lib/python3.9/site-packages/flask/app.py", line 1499, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "/Users/bmoney/Documents/python_projects/flask-practice/app.py", line 34, in add_guide
title = request.json['title']
TypeError: 'NoneType' object is not subscriptable
我知道在这种情况下 None 是不可迭代的,但我看不出什么会运行 NoneType 错误。
对于这些信息的价值,我正在通过 Postman 在正确的本地主机上运行 GET 和 POST 请求。
提前谢谢你,我真的很感谢这个社区!
【问题讨论】:
-
你能edit 并粘贴完整的回溯错误。并尝试使用
request.form['title']和request.form['content'] -
对不起!我将
request.json更改为request.form,但似乎没有成功:/
标签: python-3.x api flask sqlalchemy postman