2022.11.20 flask学习笔记

2022.11.20

1.消息闪烁
显示来自不同页面的消息,方便客户知道他们在做什么
在py代码中:

flash("you have beign logged out!","info")
在html代码中:

{% with messages = get_flashed_messages() %}
        {% if messages %}
            {% for mes in messages %}
               

{{mes}}


            {% endfor %}
        {% endif %}
    {% endwith %}

2.数据库操作
1.创建数据库对象,配置基础信息
db = SQLAlchemy(app)
app.config[ 'SQLALCHEMY_DATABASE_URI' ] = 'sqlite:///users.sqlite3'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

2.创建模型
class users(db.Model):
    _id = db.Column("id",db.Integer,primary_key = True)
    name = db.Column(db.String(100))
    email = db.Column(db.String(100))

    def __init__(self,name,email):
        self.name = name
        self.email = email
用py语句代替sql语句

3.增删改查语句
 #执行数据库语句
        found_user = users.query.filter_by(name=user).first()
        if found_user:
            session["email"] = found_user.email
        else:
            usr = users(user,"")
            db.session.add(usr)
            db.session.commit()

found_user = users.query.filter_by(name=user).first()
            found_user.email = email
            db.session.commit()

4.创建数据库
db.create_all()

5.数据库执行语句
db.session.commit()

6.查询全部的数据:
values=users.query.all()

7.删除语句:
vfound_user = users.query.filter_by(name=user).delete()

for user in found_user:
        user.delete()

8.将文件拆分,并引入静态文件
html代码:

所有的静态文件都必须放在static文件夹下
引用绝对路径:

9.使用蓝图
在second.py文件中
from flask import Blueprint, render_template

second = Blueprint("second",__name__,static_folder="static",template_folder="templates")

static_folder="static",template_folder="templates"是可选项,用来决定静态文件夹与html文件放在哪里

@second.route("/home")
@second.route("/")
def home():
    render_template("home.html")

在main.py(主文件中)
from second import second
app.register_blueprint(second, url_prefix="")

url_prefix为空的时候,如果蓝图和主文件route定义冲突,优先执行蓝图
url_prefix不为空
app.register_blueprint(second, url_prefix="/admin")
如果s此时的url带有/admin,将除了/admin以外的部分传给蓝图开始执行
例如:
127.0.0.1/admin,传127.0.0.1
127.0.0.1/admin/test 传127.0.0.1/test

可以将蓝图文件全部放入一个python包中,再引用

10.flask部署安装
(可以下去自行了解,https://www.bilibili.com/video/BV1Hv41147ZS/)

问题:
1.出现了AttributeError: 'BaseQuery' object has no attribute 'frist'这样的错误
found_user = users.query.filter_by(name=user).first()是单词拼错了

2.设置静态文件后一直没有反应
if __name__ == "__main__":
    app.run(debug=True,port=45671)
重新设置了端口后解决,看来还是端口冲突了

总结:
1.消息闪烁:页面间的消息传递
2.使用数据库,及数据库增删改查语句
3.蓝图:在大网页中嵌套多个flaskapp成为可能

你可能感兴趣的:(flask,学习,python)