2022.11.20
1.消息闪烁
显示来自不同页面的消息,方便客户知道他们在做什么
在py代码中:
flash("you have beign logged out!","info")
在html代码中:
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for mes in messages %}
<p>{{mes}}</p>
{% 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代码:
<link rel="stylesheet" href="{{url_for = 'static',filename='style.css'}}" />
所有的静态文件都必须放在static文件夹下
引用绝对路径:
<link rel="stylesheet" type="text/css" href="{f url_for( 'static', filename= 'styles/style.css')}}">
<image src="{{url_for('static',filename ='images/narae.jpg')}}" />
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成为可能