# 简易在线书评网站实现技术博客


背景介绍

随着用户对在线书评的需求增长,开发一个支持输入书籍名称和评分的简易网站变得非常重要。本项目采用Python和Flask框架,通过本地文件存储用户数据,实现对书籍信息的读取与输出,同时具备良好的可扩展性与学习价值。

思路分析

  1. 数据存储方案
    本项目采用本地文件存储,以避免外部依赖,方便后续扩展。使用Python的文件读写功能,将用户输入的书籍信息保存在book_reviews.txt文件中。每次用户输入数据时,系统自动读取文件并存储,确保数据持久性。

  2. 后端逻辑设计

    • 创建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开发中的强大能力。