Skip to content

Instantly share code, notes, and snippets.

@nonozone
Last active November 8, 2023 01:12
Show Gist options
  • Save nonozone/4a351601dbc7050b13d48c4e330b72a1 to your computer and use it in GitHub Desktop.
Save nonozone/4a351601dbc7050b13d48c4e330b72a1 to your computer and use it in GitHub Desktop.
daka
## 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