开篇
废话不多说,咱们先看效果图;
浏览器输入diyi.love/ym 或者 diyi.love/杨幂
(手机好多浏览器不支持路径后面有中文,会识别成 搜索,不是网址)
介绍
一天不学习浑身难受(打游戏打累了),最近学了一点python,看到一个前端框架flask,很是轻量级,自己也是前端开发,就整出这个小项目了。谁说程序猿不懂烂漫?我们也有自己表达烂漫的方式!
开发环境
win11 x64
Python 3.10.1
Mysql 5.7
(fdiyi) PS D:\workspace_python\fdiyi> pip list
Package Version
---------------- --------
click 8.0.4
colorama 0.4.4
Flask 2.0.3
Flask-SQLAlchemy 2.5.1
greenlet 1.1.2
itsdangerous 2.1.0
Jinja2 3.0.3
MarkupSafe 2.1.0
mysqlclient 2.1.0
pip 21.2.4
setuptools 58.1.0
sql-client 0.0.1rc0
SQLAlchemy 1.4.31
Werkzeug 2.0.3
开始
前提是python,pip都要安装好。
1. 创建虚拟环境
没安装的安装一下
pip install virtualenv
# windows系统需要在后面加“-win”,linux,macos不需要
pip install virtualenvwrapper-win
创建一个名叫:envname 的虚拟环境
#python: python3
#-m: 模块以脚本的方式运行,不加-m是直接运行
#venv: 虚拟环境关键词
#envname:自定义虚拟环境文件夹名字
python -m venv envname
安装所需要的核心库
flask: 前端web轻量级框架
pip install flask
install flask_sqlalchemy
pip install mysqlclient
2. 创建根路由
直接访问 127.0.0.1:5000 或者 网站根路由返回一个首页“index.html”
@app.route('/')
def index():
return render_template('./index.html')
3. 获取路由参数
也就是网站第一个斜杆后面的内容
127.0.0.1:5000/ym
diyi.love/ym
其中的aname = ym
拿到aname后从数据库中匹配对应的数据条目,有的话就返回爱心界面,否者跳到根路由界面index.html.
我的这部分代码加了点缓存,不用频繁读取数据库。逻辑上还有待优化…
@app.route('/<aname>')
def home(aname):
print(aname)
# 1. 判断aname是否是关键字,如果是index等字眼,返回首页
if aname in keywords:
return render_template('./index.html')
args = request.args
print(args)
# 从参数判断是否从缓存中取数据
person = pcache.get(aname)
isNew = 'isnew' in request.args.keys()
if isNew and request.args.get('isnew') == '1' :
person = None
if person is None:
# 从person表中取出 aname相关数据
person = Person.query.filter_by(router=aname).first()
if person:
pcache.add(person)
print("从数据库拿数据。{}".format(person.router))
print(person)
# 判断是否为空,有数据的话返回渲染
if person:
return render_template('./love.html',airen=person.name,boss=person.boss,starttime=person.starttime)
return render_template('./index.html')
4. 项目结构目录
static:静态文件,比如说那个index.html文件就在里面,还有一些css,js等;
model:模型文件,比如说映射到数据库表字段的文件
app.py:入口文件,我这边所有逻辑代码都在里面了。一共也就50行左右。这样看来flask是真的很轻量级了。
总结
学海无涯,继续学习中,有啥建议欢迎告知。
项目代码已部署到网站diyi.love ,欢迎体验”ym“,”杨幂“,”dlrb“
代码已提交到github,持续更新…飞机票
第一次提交python代码,感觉里面有很多文件是不用提交的。gitignore文件没设置好,请老师们多多包涵,见谅了哈!