主要内容: dragonfire
1 flask的cbv写法:
from flask import Flask, render_template, redirect, request, url_for from flask import views app = Flask(__name__) class LoginView(views.MethodView): def get(self): print(url_for('login')) return render_template("login.html") def post(self): userinfo = request.form.to_dict() username = userinfo.get("username") password = userinfo.get("password") if username == '丽丽' and password == "123": return "登录成功" else: return redirect("/login") app.add_url_rule('/login', view_func=LoginView.as_view(name="login")) # name指定的是别名, 会当做endpoint使用. app.run(debug=True)
2 flash : Flask中闪现是基于session来实现的,而session存在于服务器端的一个字典里,把session保存起来,取一次值,里面还是有数据,直到你完全删除后才没有值了
a : flash中存数据 flash('字符串')
b: flash中取数据 get_flash_message()
from flask import Flask, request, flash, render_template, get_flashed_messages from flask import views app = Flask(__name__) app.secret_key = "sudden" # Flask中闪现是基于session来实现的,而session存在于服务器端的一个字典里,把session保存起来,取一次值,里面还是有数据,直到你完全删除后才没有值了。 class LoginView(views.MethodView): def get(self): flash(" suddently exist") return render_template("login.html") def post(self): print(get_flashed_messages()) return "login success!" app.add_url_rule("/ll", view_func=LoginView.as_view(name="ll")) app.run(debug=True)
3 flask-seesion组件
import redis from flask import Flask, render_template, request, session # flask-session组件则将支持session保存到多个地方 from flask_session import Session app = Flask(__name__) #将seesion保存在redis中 app.config["SESSION_TYPE"] = 'redis' app.config["SESSION_REDIS"] = redis.Redis(host='127.0.0.1', port=6379, db=3) Session(app) @app.route("/index") def index(): session["user"] = "123" ret = session.get("user") print(ret) return 'index page' app.run(debug=True) # 443abf7c-b240-4e6b-a7ac-14f38505362f # 在数据库中的取session的值: get session: value值
4 WTForms- 相当于django中的modelform : 是stringfield父类中的field类中的init方法.
from wtforms import Form from wtforms.fields import simple, core from wtforms import validators class RegForm(Form): ( password = simple.PasswordField( label="密码", validators=[ validators.DataRequired(message="密码不能为空"), validators.length(min=4, max=7, message="密码的长度不能低于4大于7") ], # 可以控制渲染内容的属性 render_kw={"class": "form-control"} ) re_password = simple.PasswordField( label="确认密码", validators=[ validators.EqualTo(fieldname="password", message="两次密码不一致") ], # 可以控制渲染内容的属性 render_kw={"class": "my_password"} ) hobby = core.SelectMultipleField( label="爱好", coerce=int, choices=( (1, '小姐姐'), (2, '小哥哥'), (3, '小萝莉') ), default=(1,2) ) submit = simple.SubmitField( label="提交" )
在html中的展示:
<body> <form action="" method="post"> {% for field in rf %} <div> {{ field.label }}{{ field }} </div> {% endfor %} </form> </body>
5 DBUtills 数据库连接池: 116天代码