背景介绍
随着用户对在线书评的需求增长,开发一个支持输入书籍名称和评分的简易网站变得非常重要。本项目采用Python和Flask框架,通过本地文件存储用户数据,实现对书籍信息的读取与输出,同时具备良好的可扩展性与学习价值。
思路分析
- 数据存储方案
本项目采用本地文件存储,以避免外部依赖,方便后续扩展。使用Python的文件读写功能,将用户输入的书籍信息保存在book_reviews.txt文件中。每次用户输入数据时,系统自动读取文件并存储,确保数据持久性。 -
后端逻辑设计
- 创建Flask服务器,处理POST请求,接收书籍名称和评分。
- 读取本地文件内容,提取书籍信息并返回结果。
- 显示评分信息,确保输出结果直观可见。
代码实现
1. 创建Flask服务器
from flask import Flask, request, jsonify
app = Flask(__name__)
# 本地文件存储路径
file_path = 'book_reviews.txt'
# 存储书籍信息的函数
def save_book(book_name, score):
with open(file_path, 'r') as f:
data = f.read().strip()
if data:
# 假设文件内容以书籍名称和评分分存储,按行分割
parts = data.split('\n')
for part in parts:
if part:
if part.strip() == f"{book_name}: {score}":
# 存储成功
print("书评内容已加载")
print("书籍名称:", book_name)
print("评分:", score)
return
print("存储失败,无法写入书评内容")
# 获取评分信息的函数
def get_book_info(review_text):
with open(file_path, 'r') as f:
data = f.read().strip()
if data:
# 按行读取信息
lines = data.split('\n')
for line in lines:
if line.strip() == review_text:
# 输出结果
print("书评内容已加载")
print("书籍名称:", line.split()[0])
print("评分:", line.split()[1])
return
print("无法读取书评内容")
# 后端路由
@app.route('/book', methods=['POST'])
def save_book_route():
book_name = request.json.get('book_name')
score = request.json.get('score')
if book_name and score:
save_book(book_name, score)
return jsonify({"status": "success", "message": "书评信息已保存"}), 200
@app.route('/book_info', methods=['GET'])
def get_book_info_route():
review_text = request.args.get('review_text')
get_book_info(review_text)
if __name__ == '__main__':
app.run(debug=True)
2. 输出结果示例
# 用户输入示例
curl -X POST -H "Content-Type: application/json" -d '{"book_name": "百年孤独", "score": 4.5}' http://localhost:5000/book
# 输出结果
- 存储的评述内容已加载
- 显示书籍名称和评分结果
总结
本项目通过Python和Flask框架实现了一个简易的在线书评网站,能够高效处理用户输入数据,并直接返回评分信息。整个实现过程涵盖了文件读写、数据处理以及网络请求的核心功能,具备良好的可扩展性和可学习性。该项目不仅满足基本功能需求,也为后续扩展提供了基础,展现了Python在Web开发中的强大能力。