flask框架之入门

pip install flask 安装flask运行环境

和Django类似,flask里面的模板也存放在templates文件夹下,用pycharm执行前,需要将其指定为模板文件并指定模板类型为jinja2

脚本代码为:

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中。是认真的么???

原文地址:https://www.cnblogs.com/wen-kang/p/10683672.html