Last active
November 8, 2023 01:12
-
-
Save nonozone/4a351601dbc7050b13d48c4e330b72a1 to your computer and use it in GitHub Desktop.
daka
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## app.py | |
# 导入Flask和SQLAlchemy | |
from flask import Flask | |
from flask_sqlalchemy import SQLAlchemy | |
# 创建Flask应用实例 | |
app = Flask(__name__) | |
# 配置SQLite数据库 | |
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' | |
# 初始化数据库 | |
db = SQLAlchemy(app) | |
# 导入蓝图视图 | |
from views import * | |
# 注册蓝图 | |
app.register_blueprint(index_page) | |
# 运行应用 | |
if __name__ == '__main__': | |
app.run() | |
## models.py | |
# 导入db | |
from app import db | |
# 用户模型 | |
class User(db.Model): | |
id = db.Column(db.Integer, primary_key=True) # 主键 | |
username = db.Column(db.String(20)) # 用户名 | |
# 系统生成的作业 | |
class SysHomework(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
title = db.Column(db.String(100)) | |
content = db.Column(db.Text) | |
requirement = db.Column(db.String(500)) | |
# 用户上传的作业 | |
class UserHomework(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
user_id = db.Column(db.Integer, db.ForeignKey('user.id')) | |
image = db.Column(db.String(100)) | |
description = db.Column(db.String(500)) | |
# 投票模型 | |
class Vote(db.Model): | |
id = db.Column(db.Integer, primary_key=True) # 主键 | |
homework_id = db.Column(db.Integer, db.ForeignKey('homework.id')) # 外键 | |
count = db.Column(db.Integer, default=0) # 投票数 | |
## views.py | |
# 导入需要的包和模型 | |
from flask import Blueprint, render_template, request, redirect, url_for | |
from app import db | |
from models import Homework, Vote | |
from sqlalchemy import func | |
# 创建蓝图 | |
index_page = Blueprint('index', __name__) | |
# 首页路由 | |
@index_page.route('/') | |
def index(): | |
homeworks = Homework.query.all() # 获取所有作业 | |
return render_template('index.html', homeworks=homeworks) # 渲染首页模板 | |
# 上传路由 | |
@index_page.route('/upload', methods=['GET', 'POST']) | |
def upload(): | |
if request.method == 'POST': | |
image = request.files['image'] # 获取上传图片 | |
description = request.form['description'] # 获取描述 | |
new_homework = Homework(image=image.filename, | |
description=description) # 创建作业对象 | |
db.session.add(new_homework) # 添加到数据库会话 | |
db.session.commit() # 提交保存 | |
return redirect(url_for('index')) # 重定向到首页 | |
return render_template('upload.html') # 渲染上传页面模板 | |
# 投票路由 | |
@index_page.route('/vote', methods=['GET', 'POST']) | |
def vote(): | |
if request.method == 'POST': | |
homework_id = request.form['homework_id'] # 获取作业id | |
vote = Vote.query.filter_by(homework_id=homework_id).first() # 查询投票记录 | |
vote.count += 1 # 投票数加1 | |
db.session.commit() # 提交更新 | |
homeworks = Homework.query.order_by(func.random()).limit(2) # 随机取两条作业 | |
return render_template('vote.html', homeworks=homeworks) # 渲染投票页面模板 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment