项目地址
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)
操作详情:
- 在views下的
__init__
文件里创建蓝图对象,将视图文件名(index
)传入进去 - 将
mian.py
里的视图函数剪切到views
下的index.py
- 在
index
文件里导入蓝图对象,用蓝图对象创建视图函数的路由 - 在
main.py
里导入蓝图对象,与app绑定
数据库模型文件夹(M)
1.添加模型文件
操作详情:
- 在
moewls
下的__init__
文件里创db
对象 - 在
moewls
下的user
文件里创模型类 - 创建配置文件
config.ini
文件 - 在
main.py
文件里导入db
,将app初始化:db.init_app(app)
- 对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)
- 添加页面模板文件夹,里面方入模板文件,在项目根目录下放入静态文件
static
- 在视图函数中,从数据库查询数据用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