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

  • 相关阅读:
    md5加密排序
    md5加密
    PHP获取文件后缀名
    PHP中使用CURL实现GET、POST、PUT、DELETE请求
    PHP常用正则表达式精选
    19 个让 MySQL 效率提高 3 倍的 SQL 优化技巧
    git clone、 remote、fetch、pull、push、remote
    git 命令常用笔记
    十个推荐使用的 Laravel 的辅助函数
    PHP常用函数大全500+
  • 原文地址:https://www.cnblogs.com/wen-kang/p/10683672.html
Copyright © 2011-2022 走看看