1.pycharm[专业版]创建一个Flask项目(新的虚拟环境需要导入对应的包)
2.配置settings.py文件(可复用)
sqlalchemy_flask 资料:
3.创建模块包apps(目的是为了按照模块管理路由,更整洁),同时编辑启动文件app.py和apps的初始化文件__init__.py
(1) 为什么要把原来app.py中的app = Flask(__name__)单独放到模块包apps中的__init__.py中呢?
答:要保持启动文件尽量整洁干净,由于app对象需要很多配置,所以单独创建一个函数放这些配置,然后让app.py去调用函数,函数加载完配置后返回一个app对象供启动文件使用。
(2) 为什么要用manager去调用app对象来启动呢?
答:通过flask-script中的manager是为了更好的使用脚本命令来运行服务,可以自定义命令或者添加参数来启动,通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过python hello.py runserver --host ip地址,告诉服务器在哪个网络接口监听来自客户端的连接。
4.创建一个第三方扩展的模块包exts,然后在__init__.py中将数据库的连接工具SQLAlchemy导入,创建db对象
5.然后在create_app()函数中初始化db,db就和app建立起关联
6.db和app建立关联后需要使用命令去管理它们之间的映射,并使用manager去添加控制db的命令,输入python3 app.py后可以查看能够使用的参数命令
7.在apps包下创建user包和其他模块的包(比如bolg的话还有article包等),然后在user包下创建view.py(路由逻辑)和models.py(数据库操作)文件
models.py文件中,类是表名,属性是字段,表名类必须继承db.Model
注意:model中的类名必须在app.py中导入这个包
8.然后在命令行中输入:python3 app.py db init 生成了migrations文件夹
9.然后使用命令:python3 app.py db migrate 在migrations/versions文件夹中生成对应的版本文件
10.使用命令:python3 app.py db upgrade 将类对应的表同步到数据库中
11.开始添加界面,先在view.py中添加蓝图
蓝图的作用就是讲每个模块的路由都划分清楚,不用都放在@app.route()上
然后在create_app()中注册蓝图
12.写HTML界面,并在view.py中使用render_template()来调用
不清楚路由名称的话可以先打印app.url_map来查看
13.注册功能实现
(1)register.html 注意表单提交使用post
(2)注册的逻辑代码
(3)注册浏览器界面
(4)注册成功后查询数据库
14.注册后跳转到用户中心并显示表单
{% if %}:控制块
{{ name }}:变量
想要使用python获取的数值,必须用render_tamplate(‘center.html’, name=name)去传参
User.query.all() <==> select * from user;
将数据库中查询的结果返回(返回的是一个user对象list),然后显示到前端的table中
15.用户登录逻辑
登录按钮点击后,把username+password去跟数据库中的数据进行匹配
User.query.filter_by(username=username) <==> select * from user where 字段=值;
User.query.filter_by(username=username).first() <==> select * from user where 字段=值 limit(1);
根据主键查询用户
User.query.get(1)
User.query.filter(User.username == ‘zhaoyan’) <==> User.query.filter(模型名.字段名 == 值)