from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user
from werkzeug.security import generate_password_hash, check_password_hash
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'
# 用户模型
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), unique=True, nullable=False)
password = db.Column(db.String(150), nullable=False)
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
# 路由定义
@app.route('/')
def home():
return redirect(url_for('login'))
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if User.query.filter_by(username=username).first():
flash('用户名已存在,请选择其他用户名', 'danger')
return render_template('register.html')
new_user = User(username=username, password=generate_password_hash(password))
try:
db.session.add(new_user)
db.session.commit()
flash('注册成功!', 'success')
return redirect(url_for('login'))
except Exception:
db.session.rollback()
flash('注册失败,请稍后再试', 'danger')
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if user and check_password_hash(user.password, password):
login_user(user)
return redirect(url_for('index')) # 重定向到 index
flash('登录失败,请检查用户名和密码', 'danger')
return render_template('login.html')
@app.route('/index')
@login_required
def index():
return render_template('index.html')
@app.route('/dashboard')
@login_required
def dashboard():
return render_template('dashboard.html')
@app.route('/leave_request', methods=['GET', 'POST'])
@login_required
def leave_request():
if request.method == 'POST':
flash('请假申请已提交!', 'success')
return redirect(url_for('dashboard'))
return render_template('leave_request.html')
@app.route('/leave_history')
@login_required
def leave_history():
return render_template('leave_history.html')
@app.route('/leave_progress')
@login_required
def leave_progress():
return render_template('leave_progress.html')
@app.route('/logout')
@login_required
def logout():
logout_user()
flash('您已成功登出!', 'success')
return redirect(url_for('login'))
@app.route('/profile/settings', methods=['GET', 'POST'])
@login_required
def profile_settings():
if request.method == 'POST':
flash('设置已更新!', 'success')
return redirect(url_for('profile_settings'))
return render_template('profile_settings.html')
@app.route('/feedback', methods=['GET', 'POST'])
@login_required
def feedback():
if request.method == 'POST':
flash('反馈已提交!', 'success')
return redirect(url_for('dashboard'))
return render_template('feedback.html')
@app.route('/help', methods=['GET'])
def help():
return render_template('help.html')
@app.route('/faq', methods=['GET'])
def faq():
return render_template('faq.html')
if __name__ == '__main__':
with app.app_context():
db.create_all()
app.run(debug=True)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
python+flak请假系统.zip (15个子文件)
python+flak请假系统
instance
instance
site.db 16KB
site.db 12KB
app.py 4KB
image
12.jpg 802KB
templates
faq.html 3KB
register.html 4KB
leave_history.html 3KB
feedback.html 3KB
dashboard.html 5KB
help.html 4KB
login.html 5KB
leave_request.html 5KB
index.html 4KB
leave_progress.html 4KB
profile_settings.html 2KB
共 15 条
- 1
资源评论
长方体瞬间转移师
- 粉丝: 80
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- halcon-基于halcon的芯片缺陷检测算法实现-优质项目实战.zip
- halcon-基于halcon的相机标定-优质项目实战.zip
- gRPC-使用Cpp+Cmake编译gRPC工程示例-附项目源码+流程教程-优质项目实战.zip
- GPT2-基于Pytorch实现GPT2文本生成大模型算法-附项目源码-优质项目实战.zip
- gprc-在windows-x64上构建gprc示例-包括服务端和客户端-附项目源码+流程教程-优质项目实战.zip
- GAN-基于Pytorch在CelebA数据集上训练DCGAN生成对抗网络-附项目源码-优质项目实战.zip
- Swift编程语言基础语法入门详解及其应用场景
- Ocenaudio:轻量级音频编辑工具
- CUDA加速-在GPU上使用CUDA加速实现SIFT-附项目源码+性能数据-优质项目实战.zip
- CUDA加速-在GPU上使用CUDA加速实现随机森林-附项目源码-优质项目实战.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功