zoukankan      html  css  js  c++  java
  • 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中。是认真的么???

  • 相关阅读:
    解决GitHub下载速度缓慢的问题
    什么是“个人商业模式”?就是一个人出售自己时间的方式
    phpstudy如何安装ssl证书
    心不动——王阳明最可怕之处
    人间立命王阳明
    计算机视觉数据集
    ECG心电图数据2
    ECG心电图数据1
    梯度下降VS随机梯度下降
    SGD
  • 原文地址:https://www.cnblogs.com/wen-kang/p/10683672.html
Copyright © 2011-2022 走看看