Python-Flask:程序猿的烂漫,送给第一爱人

开篇

废话不多说,咱们先看效果图;
浏览器输入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('/')
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是真的很轻量级了。
Python-Flask:程序猿的烂漫,送给第一爱人_第1张图片

总结

学海无涯,继续学习中,有啥建议欢迎告知。
项目代码已部署到网站diyi.love ,欢迎体验”ym“,”杨幂“,”dlrb“
代码已提交到github,持续更新…飞机票
第一次提交python代码,感觉里面有很多文件是不用提交的。gitignore文件没设置好,请老师们多多包涵,见谅了哈!

你可能感兴趣的:(python,flask,后端)