flask基础
1. Django Web框架
优点:大而全,Froms Admin model ......
缺点:浪费资源
2. Flask Web框架
优点:短小精悍,session(存放在cookies),三方组件强大
缺点:运行稳定性较差,你还不会
三行代码:
from flask import Flask
app = Flask(__name__)
app.run()
六行视图函数
@app.route("/index") # 路由
def index(): # 视图函数
return "Hello OldBoy EDU" # Django HttpResponse
response三剑客:
httpresponse: return "hello"
jsonify({k:v})
render_template :
先导入再 return
templates 是模板的默认存放路径
redirect:
先导入再 return redirect("/login")
send_file():
先导入再 return send_file(打开文件并返回)
request:
args url地址当中的参数
form POST请求体中的FormData中的数据
values 获取所有参数(url,formdata)
request.data content-type:jinwangbayinwangbabiwushangzanjiadelaowangba b"{username:jinwangba}"
request.json content-type:application/json 将数据序列化字典中
request.files 获取Formdata中的文件
jwbdf = request.files["jinwangbadefile"]
jwbdf.save(jwbdf.filename)
属性类的:
method 请求方式
url 完整地址
host 前半段儿 http://111.111.111.111:5000/
path 后半段儿 /login
模板语言:
Jinja2
{{ }} 非逻辑代码
{% %} 逻辑代码
路由:
methods=["POST","GET"]
endpoint="反向url地址"
url_for("反向url地址")
defaults={"nid":10}
动态路由参数/index/<int:arg>
url_for("endpoint",arg=123)
Flask的配置
1.Flask实例化配置
static_folder = 'static', # 静态文件目录的路径 默认当前项目中的static目录
static_url_path = None, # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用
template_folder = 'templates' # template模板目录, 默认当前项目中的 templates 目录
2.Flask对象配置
'SECRET_KEY': None, # 之前遇到过,在启用Session的时候,一定要有它
'SESSION_COOKIE_NAME': 'session', # 在cookies中存放session加密字符串的名字
'JSONIFY_MIMETYPE': 'application/json'
class FlaskConfigDebug(object):
DEBUG = True
SECRET_KEY = "DragonFire"
class FlaskConfigTesting(object):
TESTING = True
SECRET_KEY = "DragonFire"
app.config.from_object(FlaskConfigDebug)
Flask蓝图(Blueprint)
蓝图就是另一种形式的Flask实例
detail_blueprint = Blueprint("serv",__name__, template_folder="serv_temp",
static_folder="serv_static",
static_url_path="/serv_static",url_prefix="/servs")
Flask特殊装饰
@app.template_folder() 类偏函数的方法
@app.template_global() 全局函数
@app.errorhandler(405)
def my_405(args)
@app.before_request
def be1():
return None 是继续
return not None 是中断
@app.after_request
def af1(res):
return res
# be1 - be2 - af2 - af1
# be1 - af2 - af1
Flask中的session
app.config["SECRET_KEY"] = "asdfasdfasdf"
Flask中的 CBV
class Login(views.MethodView):
def get(self):
return render_template("template.html")
def post(self):
username = request.form.get("username")
password = request.form.get("password")
if username == "yinwangba" and password == "jinwangba":
return "登录成功"
return render_template("template.html",msg="登录失败滚吧")
app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))