web框架之flask

项目地址

https://github.com/Young157/flask_demo

一. 在GitHub上创建仓库,配置git与ssh免密登录。

git init  # 初始化git
git config --global  user.name "GitHub用户名"
git config --global user.email "GitHub邮箱"

此步骤会要求输入一些信息,可以直接默认即可,当看到下图就好了

在这里插入图片描述
之后会生成两个文件,路径一般在User文件夹下的.ssh文件夹里。

  • id_rsa:私钥,存放在本地的
  • id_rsa.pub:公钥,上传到GitHub上,步骤如下:

点击GitHub头像 >> Settings >> SSH and GPG keys >> New SSH key >> 输入Title(自定义)与Key(公钥)

这样SSH就配置好了,之后再操作GitHub就不需要登录密码了。


二.flaks主程序基本结构

此代码是显示一个flask最基本的结构,右键运行就可以在网页输入172.0.0.1:9988就可以在浏览器上返回hello world

from flask import Flask

# 创建flask对象,传入参数__name__
app = Flask(__name__)

# 使用路由装饰视图
@app.route('/')
def index():
    return 'hello world'  # 返回显示在网页上的内容

if __name__ == '__main__':
    # 运行app,指定端口,和debug=True:表示当代码修改后框架自动重启
    app.run(port=9988, debug=True)

三.创建项目基本结构上传到GitHub

git add .
git commit -m'备注信息'
git push "GitHub仓库SSH路径"

然后在GitHub仓库就能看到自己上传的文件夹了,由于设置了ssh,所以push提交的时候就不需要输入GitHub账号密码了
注意: 在实际开发中,应该尽量多使用commit,这样就相当于每个功能或步骤都在GitHub上有个备份,当想还原版本的时候,就可以很清楚的知道自己要还原到哪了,哪个版本又做了些什么。


四.更改项目为MVT结构

MVT是flask web框架开发的核心。

  • M(models):存放所有的模型类
  • V(views):里面是视图函数和路由器
  • T(templates):存放的是所有的HTML模板文件

视图文件夹结构(V)

在这里插入图片描述

操作详情:

  1. 在views下的 __init__文件里创建蓝图对象,将视图文件名(index)传入进去
  2. mian.py里的视图函数剪切到views下的index.py
  3. index文件里导入蓝图对象,用蓝图对象创建视图函数的路由
  4. main.py里导入蓝图对象,与app绑定

数据库模型文件夹(M)

1.添加模型文件

在这里插入图片描述
操作详情:

  1. moewls下的 __init__文件里创db对象
  2. moewls下的 user文件里创模型类
  3. 创建配置文件config.ini文件
  4. main.py文件里导入db,将app初始化:db.init_app(app)
  5. 对app进行配置:app.config.from_pyfile("config.ini")
    config.ini文件详情
# 数据库相关配置
# 设置数据库的链接地址
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://MySQL用户名:MySQL密码@localhost:3306/数据库名'
# 是否开启追踪数据库的改变
SQLALCHEMY_TRACK_MODIFICATIONS = True
# 打印数据库执行的语句
SQLALCHEMY_ECHO = True

2.配置数据库迁移

在这里插入图片描述

3. 修改后需要使用python main.py runserver -p 8899来运行程序
	格式:python版本 程序入口文件名 runserver -p 端口号

4. 第一次使用数据库迁移时初始化python main.py db init,会生成如下文件,但此时数据库中还没有数据表

在这里插入图片描述


5. 使用python main.py db migrate -m 'init',在versions里生成了一个迁移文件,在数据库中创建了一张版本控制记录表alembic_version

在这里插入图片描述


6. 生成数据表,表名与表结构与models里模型类的结构一致

在这里插入图片描述


7. 数据库插入数据为后面登录做准备:insert into user values(1,'996','andox','666','','996就是一种生活方式');

在这里插入图片描述

HTML模板文件(T)

  1. 添加页面模板文件夹,里面方入模板文件,在项目根目录下放入静态文件static
    在这里插入图片描述
  2. 在视图函数中,从数据库查询数据用jinja2语法替换模板中的内容
    在这里插入图片描述

3.用jinja2语法修改模板文件
在这里插入图片描述
4.页面展示从数据库查询出来的消息
在这里插入图片描述

完成登录页面

1.添加视图函数

在这里插入图片描述

2.判断用户名密码

在这里插入图片描述

3.登录状态保持

3.1 在config.ini 里面添加秘钥配置:SECRET_KEY = 'KJHKgjhvOVljhgGL'此值随意,越乱越长更安全
在这里插入图片描述

3.2 登录页添加session,如果用户名密码正确,给session添加一个值,例如:session['user_id'] = user.user_id
在这里插入图片描述

3.3 在主页判断此值是否存在,存在,数据库查询用户信息返回主页,不存在重定向登录页面

在这里插入图片描述

4.登出功能
1.在主页添加登出按钮在这里插入图片描述
2.新增登出视图,清空session,跳转到登录页面

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200918014133227.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTY1MTI5MQ==,size_16,color_FFFFFF,t_70#pic_center

项目中用到的命令

1.pip相关

pip install “包名” -i “pip加速镜像网址”

pip加速镜像网址

  • 阿里云 http://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  • 豆瓣(douban) http://pypi.douban.com/simple/
  • 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
  • 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
2.虚拟环境相关
名称虚拟环境基本命令
创建虚拟环境mkvirtualenv -p python3 虚拟环境名
查看已创建的所有虚拟环境workon
进入虚拟环境workon 虚拟环境名
查看当前虚拟环境下的包pip list
在虚拟环境里安装包pip install 包名
退出虚拟环境deactivate
删除虚拟环境rmvirtualenv 虚拟环境名
3.git相关
名称git基本命令
初始化本地库git init
将工作区的“新建/修改”添加到暂存区git add .
将暂存区的内容提交到本地库git commit -m’备注信息’
提交到远程仓库git push
从远程仓库拉取git pull
克隆远程仓库代码git clone 远程仓库地址
查看工作区、暂存区的状态git status
查看历史提交git log
比较差异git diff

项目中用到的模块

alembic 1.4.3
click 7.1.2
Flask 1.1.2
Flask-Migrate 2.5.3
Flask-Script 2.0.6
Flask-SQLAlchemy 2.4.4
itsdangerous 1.1.0
Jinja2 2.11.2
Mako 1.1.3
MarkupSafe 1.1.1
pip 20.2.3
PyMySQL 0.10.1
python-dateutil 2.8.1
python-editor 1.0.4
setuptools 49.6.0
six 1.15.0
SQLAlchemy 1.3.19
Werkzeug 1.0.1
wheel 0.35.1


thank you

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值