- 前端(HTML/CSS/JavaScript)hellohailuo.com
index.html
html
欢迎来到游戏商城
<script>
$(document).ready(function() {
fetchGames();
});
function fetchGames() {
$.getJSON('/api/games', function(data) {
const gameList = $('#game-list');
gameList.empty();
data.forEach(game => {
const gameElement = $('<div>').append(
$('<h2>').text(game.name),
$('<p>').text('价格: ' + game.price + '元'),
$('<button>').text('加入购物车').on('click', function() {
addToCart(game.id);
})
);
gameList.append(gameElement);
});
});
}
function addToCart(gameId) {
console.log(`游戏ID为${gameId}的游戏已添加到购物车!`);
// 这里可以添加更复杂的购物车逻辑
}
</script>
2. 后端(Python/Flask) app.py
python
from flask import Flask, jsonify, request, g
from flask_sqlalchemy import SQLAlchemy
app = Flask(name)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///gamestore.db’
app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False
db = SQLAlchemy(app)
class Game(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
price = db.Column(db.Float, nullable=False)
def __repr__(self):
return f'<Game {self.name}>'
@app.before_first_request
def create_tables():
db.create_all()
# 初始化数据库,添加一些示例数据
if not Game.query.first():
new_game = Game(name=‘英雄联盟’, price=99.99)
db.session.add(new_game)
new_game = Game(name=‘守望先锋’, price=199.99)
db.session.add(new_game)
db.session.commit()
@app.route(‘/api/games’)
def get_games():
games = Game.query.all()
return jsonify([{‘id’: game.id, ‘name’: game.name, ‘price’: game.price} for game in games])
if name == ‘main’:
app.run(debug=True)
3. 数据库(SQLite)
在这个例子中,我们使用了SQLite数据库,并通过Flask-SQLAlchemy ORM进行操作。数据库文件(gamestore.db)将在应用首次运行时自动创建并填充一些示例数据。
注意事项
这个示例使用了jQuery来简化AJAX调用,但你可以使用原生JavaScript的fetch API或其他库如Axios。
数据库初始化代码(create_tables函数)在首次请求前运行,确保数据库和表被创建,并填充了初始数据。
Flask应用运行在调试模式下,这对于开发和测试很有用,但在生产环境中应该关闭。
安全性考虑:这个示例没有实现任何形式的用户认证、数据验证或错误处理,这些都是在生产级应用中必需的。生成一个完整的游戏商城代码涉及到多个层面和多种技术,包括前端、后端、数据库等。由于篇幅和复杂性的限制,我将提供一个简化的示例,涵盖前端(HTML/CSS/JavaScript)、后端(Python/Flask)、以及数据库(SQLite)的基本实现。请注意,这只是一个非常基础的示例,用于展示不同部分的交互。
- 前端(HTML/CSS/JavaScript)
index.html
html
欢迎来到游戏商城
<script>
$(document).ready(function() {
fetchGames();
});
function fetchGames() {
$.getJSON('/api/games', function(data) {
const gameList = $('#game-list');
gameList.empty();
data.forEach(game => {
const gameElement = $('<div>').append(
$('<h2>').text(game.name),
$('<p>').text('价格: ' + game.price + '元'),
$('<button>').text('加入购物车').on('click', function() {
addToCart(game.id);
})
);
gameList.append(gameElement);
});
});
}
function addToCart(gameId) {
console.log(`游戏ID为${gameId}的游戏已添加到购物车!`);
// 这里可以添加更复杂的购物车逻辑
}
</script>
2. 后端(Python/Flask) app.py
python
from flask import Flask, jsonify, request, g
from flask_sqlalchemy import SQLAlchemy
app = Flask(name)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///gamestore.db’
app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False
db = SQLAlchemy(app)
class Game(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
price = db.Column(db.Float, nullable=False)
def __repr__(self):
return f'<Game {self.name}>'
@app.before_first_request
def create_tables():
db.create_all()
# 初始化数据库,添加一些示例数据
if not Game.query.first():
new_game = Game(name=‘英雄联盟’, price=99.99)
db.session.add(new_game)
new_game = Game(name=‘守望先锋’, price=199.99)
db.session.add(new_game)
db.session.commit()
@app.route(‘/api/games’)
def get_games():
games = Game.query.all()
return jsonify([{‘id’: game.id, ‘name’: game.name, ‘price’: game.price} for game in games])
if name == ‘main’:
app.run(debug=True)
3. 数据库(SQLite)
在这个例子中,我们使用了SQLite数据库,并通过Flask-SQLAlchemy ORM进行操作。数据库文件(gamestore.db)将在应用首次运行时自动创建并填充一些示例数据。
注意事项
这个示例使用了jQuery来简化AJAX调用,但你可以使用原生JavaScript的fetch API或其他库如Axios。
数据库初始化代码(create_tables函数)在首次请求前运行,确保数据库和表被创建,并填充了初始数据。
Flask应用运行在调试模式下,这对于开发和测试很有用,但在生产环境中应该关闭。
安全性考虑:这个示例没有实现任何形式的用户认证、数据验证或错误处理,这些都是在生产级应用中必需的。 = None