当前位置: 首页 > 新闻资讯  > 校友管理系统

用Python和Flask打造一个在线校友信息管理系统

本文通过实际需求,讲解如何使用Python和Flask框架搭建一个在线校友信息管理系统。文章包含具体代码示例。

大家好,今天我要跟大家聊一个挺有意思的话题——怎么用Python和Flask来做一个“在线校友信息管理系统”。听起来是不是有点技术味儿?不过别担心,我尽量用口语化的表达方式,把整个过程讲清楚。

首先,咱们得搞清楚这个系统到底要做什么。其实,校友信息管理系统的核心功能就是收集、存储、管理和展示校友的信息。比如姓名、联系方式、毕业年份、专业、工作单位等等。这些信息如果能在线上管理,那就方便多了,不用再靠纸质表格或者Excel文件到处传了。

校友信息管理

所以,这个系统的需求主要有几个方面:一是用户能够注册登录,二是管理员可以添加、编辑、删除校友信息,三是普通用户可以查看校友信息,四是系统要有搜索功能,让用户能快速找到想要的校友。对吧?

好了,接下来我们就要开始写代码了。这里我会用到Python语言,以及一个叫Flask的轻量级Web框架。为什么选Flask呢?因为它的学习成本低,而且适合做小型项目,特别是像这种校友信息管理系统这样的小项目。

首先,我们要安装一些必要的库。假设你已经装好了Python,那么我们可以用pip来安装Flask和数据库相关的库。比如:

pip install flask
pip install flask-sqlalchemy

这两个库分别是Flask的核心框架和一个用于操作数据库的扩展。这样我们就可以用SQLAlchemy来连接数据库了。

然后,我们创建一个简单的Flask应用。在项目目录下新建一个文件,比如叫做app.py。然后在里面写入以下代码:

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///alumni.db'
db = SQLAlchemy(app)
class Alumni(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
graduation_year = db.Column(db.Integer, nullable=False)
major = db.Column(db.String(100), nullable=False)
company = db.Column(db.String(100), nullable=False)
@app.route('/')
def index():
alumni = Alumni.query.all()
return render_template('index.html', alumni=alumni)
@app.route('/add', methods=['POST'])
def add_alumni():
name = request.form['name']
email = request.form['email']
year = request.form['year']
major = request.form['major']
company = request.form['company']
new_alumni = Alumni(name=name, email=email, graduation_year=year, major=major, company=company)
db.session.add(new_alumni)
db.session.commit()
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)

这段代码做了什么?首先,它初始化了一个Flask应用,并设置了数据库的路径为SQLite。然后定义了一个Alumni模型,也就是数据库中的表结构。接着是两个路由:一个是首页,用来显示所有校友信息;另一个是添加校友信息的路由,接收POST请求,把数据存入数据库。

接下来,我们需要创建一个HTML模板来渲染页面。在项目目录下新建一个templates文件夹,里面放一个index.html文件。内容如下:





校友信息管理系统


校友信息列表
{% for alumni in alumni %}
{{ alumni.name }} - {{ alumni.email }} - {{ alumni.graduation_year }} - {{ alumni.major }} - {{ alumni.company }}
{% endfor %}
添加新校友





这个页面很简单,显示所有校友的信息,并提供一个表单让管理员输入新的校友信息。当用户点击提交按钮时,就会触发前面定义的`/add`路由,把数据保存到数据库中。

现在,我们运行一下这个程序。在命令行里执行:

python app.py

然后访问 http://localhost:5000,就能看到一个简单的校友信息管理系统了。你可以试着添加几条数据,看看效果如何。

但问题来了,这只是一个基础版本,还不能满足实际需求。比如,用户没有登录功能,所有人都可以添加数据,这样显然不行。所以我们需要增加用户认证模块。

那么,我们该怎么实现用户登录呢?可以用Flask的Flask-Login扩展。先安装它:

pip install flask-login

然后修改我们的app.py文件,加入用户模型和登录逻辑:

from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
@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 user.password == password:
login_user(user)
return redirect(url_for('index'))
else:
return '用户名或密码错误'
return '''


''' @app.route('/logout') def logout(): logout_user() return redirect(url_for('index')) @app.route('/add', methods=['POST']) @login_required def add_alumni(): # 之前的代码保持不变

这样一来,只有登录后的用户才能添加校友信息。其他用户访问/add页面会被重定向到登录页。这样就提高了系统的安全性。

除了登录功能,我们还可以考虑添加搜索功能,让用户可以根据姓名、专业或者公司来查找校友。这个可以通过在首页添加一个搜索框,然后在路由中处理查询参数来实现。

举个例子,在index函数中:

@app.route('/')
def index():
search_query = request.args.get('q')
if search_query:
alumni = Alumni.query.filter(
Alumni.name.contains(search_query) |
Alumni.major.contains(search_query) |
Alumni.company.contains(search_query)
).all()
else:
alumni = Alumni.query.all()
return render_template('index.html', alumni=alumni)

在HTML中添加一个搜索框:

这样用户就能通过关键词搜索校友了。

总结一下,我们从最开始的需求出发,逐步构建了一个具备基本功能的在线校友信息管理系统。它包括用户登录、信息增删改查、搜索等功能。虽然还有很多可以优化的地方,比如前端美化、权限管理、数据导出等,但至少现在这个系统已经可以投入使用了。

最后,我想说,不管你是刚学编程的新手,还是有一定经验的开发者,都可以尝试自己动手做一个这样的系统。这不仅是一个练习项目,更是一个了解Web开发全流程的好机会。希望这篇文章对你有帮助!如果你有兴趣,我可以继续教你如何用更高级的技术,比如React或者Vue来做一个前后端分离的版本,那会更加酷炫哦!

好了,今天的分享就到这里。如果你觉得有用,记得点赞和关注,我们下期再见!

相关资讯

    暂无相关的数据...