在这个电商蓬勃发展的时代,商品评价系统成为了连接买家与卖家的桥梁。今天,我们将用Python语言,从零开始搭建一个简易但功能完备的在线商品评价系统。
项目背景
随着网购的普及,用户评价成为消费者决策的重要依据。一个高效、透明的评价系统能够提升用户信任度,促进商品销售。Python以其简洁高效的语法和丰富的库支持,成为实现这一系统的理想选择。
技术选型
- 后端框架:Flask
- 数据库:SQLite
- 前端展示:HTML + CSS + JavaScript
系统功能
- 用户注册登录:用户可以通过注册账号进行登录。
- 商品展示:展示商品的基本信息。
- 评价提交:用户可以对商品进行评价。
- 评价展示:展示所有用户对商品的评价。
实现步骤
1. 环境搭建
首先,确保已安装Python环境。然后,安装Flask库:
pip install Flask
2. 创建项目结构
product-review-system/
│
├── app.py
├── templates/
│ ├── index.html
│ ├── login.html
│ ├── register.html
│ └── product.html
└── static/
└── style.css
3. 数据库设计
使用SQLite创建一个简单的数据库,包含用户和评价表:
import sqlite3
def create_db():
conn = sqlite3.connect('review.db')
c = conn.cursor()
c.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT, password TEXT)''')
c.execute('''CREATE TABLE reviews (id INTEGER PRIMARY KEY, user_id INTEGER, product_id INTEGER, content TEXT, rating INTEGER, FOREIGN KEY(user_id) REFERENCES users(id))''')
conn.commit()
conn.close()
create_db()
4. 后端逻辑
在app.py
中,编写Flask应用的核心逻辑:
from flask import Flask, render_template, request, redirect, url_for, session
import sqlite3
app = Flask(__name__)
app.secret_key = 'your_secret_key'
def get_db_connection():
conn = sqlite3.connect('review.db')
conn.row_factory = sqlite3.Row
return conn
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
conn = get_db_connection()
user = conn.execute('SELECT * FROM users WHERE username = ? AND password = ?', (username, password)).fetchone()
conn.close()
if user:
session['user_id'] = user['id']
return redirect(url_for('index'))
else:
return 'Invalid credentials'
return render_template('login.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
conn = get_db_connection()
conn.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password))
conn.commit()
conn.close()
return redirect(url_for('login'))
return render_template('register.html')
@app.route('/product/<int:product_id>')
def product(product_id):
conn = get_db_connection()
reviews = conn.execute('SELECT * FROM reviews WHERE product_id = ?', (product_id,)).fetchall()
conn.close()
return render_template('product.html', reviews=reviews)
@app.route('/submit-review/<int:product_id>', methods=['POST'])
def submit_review(product_id):
if 'user_id' not in session:
return redirect(url_for('login'))
content = request.form['content']
rating = request.form['rating']
conn = get_db_connection()
conn.execute('INSERT INTO reviews (user_id, product_id, content, rating) VALUES (?, ?, ?, ?)', (session['user_id'], product_id, content, rating))
conn.commit()
conn.close()
return redirect(url_for('product', product_id=product_id))
if __name__ == '__main__':
app.run(debug=True)
5. 前端页面
在templates
目录下,创建相应的HTML文件,例如index.html
、login.html
、register.html
和product.html
。使用简单的HTML和CSS进行页面布局和样式设计。
6. 运行测试
启动Flask应用:
python app.py
在浏览器中访问`http://127.0.0
评论(0)