flask框架之入门
pip install flask 安装flask运行环境
和Django类似,flask里面的模板也存放在templates文件夹下,用pycharm执行前,需要将其指定为模板文件并指定模板类型为jinja2
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。脚本代码为:
from flask import Flask,redirect,render_template,jsonify,send_file app=Flask(__name__) @app.route('/') def index(): return redirect('/register') @app.route('/register') def register(): return render_template('reg.html') @app.route('/js') def jso(): dic={"name":'kevin'} j=jsonify(dic) return j @app.route('/send') def send(): return send_file('yun.jpg') app.run(debug=True) #启用调试模式 会自动热加载
默认获取请求数据的方式分为get和post
flask中的request对象属于全局变量,是直接导入的
post请求的数据可以通过form.get()指定的键去取值 request.form.get('username')
get请求的数据可以通过args.get()指定的键去获取值 request.args.get('username')
request.method() 获取当前的请求方式
request.form() 获取post请求中存放FormData的数据
request.args() 获去get请求中url的数据
request.urls() 获取完整的URL地址
request.path() 获取当前路由地址
request.host() 当前主机地址
request.json() 如果前端返回的数据请求头中Content-Type :application/json 则是json格式数据能直接获取到json格式
request.data() 如果前端返回的数据请求头中Content-Type :application/data 则是无法识别的数据格式,全部数据将按byte存放
关于Jinja2
{{ }} 引用变量 执行函数
{% %} 逻辑代码
| safe Markup 安全标签字符串
@app.template_global()
@app.template_filter()
{% macro create_input(na,ty) %}
{{ na }} : <input type="{{ ty }}" name="{{ na }}">
{% endmacro %}
{{ create_input("username","text") }}
flask装饰器实现简单的登陆认证(session):
from flask import Flask,render_template,request,session,redirect from functools import wraps #装饰器默认链式调用,同一装饰器作用不同视图会抛异常视图函数被覆盖 #用装饰器工具类的wraps来修正
app=Flask(__name__) app.secret_key='luckily' #一串用于加密的字符串序列化与反序列化session的值
#检查是否登录的装饰器
def wai(func): @wraps(func) def nei(*args,**kwargs): if session.get('user'): #session有值,则正常执行视图函数
ret=func(*args,**kwargs) return ret else: #未登录则强制重定向
return redirect('/login') return nei @app.route('/login',methods=['GET','POST']) # methods 可以允许通过的请求 参数为列表或元组
def login(): if request.method=='GET': return render_template('login.html') # post方法执行相关操作
user=request.form.get('username') pwd=request.form.get('password') if user=='lisa'and pwd=='12345': session['user']=user return 'OK'
else: return '用户名或者密码错误' @app.route('/index') @wai def index(): return render_template('index.html') @app.route('/about') @wai def about(): return render_template('about.html') app.run(debug=True) #开启调试模式 默认热加载编辑器
flask这个奇葩居然把session放在了本地浏览器的cookie中。是认真的么???
