我正在使用Flask,Python 2.7和REST请求创建一个JSON API(保存在JSON文件中) 我的问题是我只能访问JSON文件中保存的所有数据。我希望能够只从数组中看到一个对象(当我想编辑数据时,对于PUT请求),数据['title'],我现在不能正常工作。这让我觉得也许我没有正确保存所要求的表格? 当我用帖子保存数据时,不知道哪里不对?或者如果还有其他问题? 感谢所有帮助!
@app.route('/articleAdded', methods = ['POST'])
def added():
'''Adds new articles'''
if request.method == 'POST':
title = request.form['title']
author = request.form['author']
text = request.form['text']
article = {'title' : title, 'author' : author, 'text' : text}
articles.append(article)
try:
with open("articles.json", "w") as json_File:
new_art = json.dump(articles, json_File, sort_keys=True, indent=4)
json_File.close()
return render_template('articleAdded.html', title = title, author = author, text = text)
except:
return render_template('errorHandler.html'), 404
@app.route('/edit/<string:title>', methods=['GET'])
def edit(title):
'''shows specific aticle'''
try:
with open("articles.json", 'r') as article_file:
data = json.load(article_file)
print data['title']
if title == data['title'] :
print "hello"
return render_template('editArticle.html', data = data, title = title)
else:
print "Something went wrong!"
data.close()
except:
return render_template('errorHandler.html'), 404
答案 0 :(得分:0)
您的代码的问题来自于将return语句放在第一个代码块中的位置。当您执行返回时,它会立即结束您所在的方法,无论它是否处于循环中。你可能想尝试这样的事情:
@app.route('/api/articles', methods=['GET'])
def show_articles():
'''Opens dictionary and returns all users as json format'''
try:
with open('articles.json') as open_file:
json_ret = [jsonify({'article': article}) for article in open_file]
return json_ret
except:
return render_template('errorHandler.html'), 404
这将以jsonified对象列表的形式呈现给你,我假设这是你原本想要做的事情。