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

  • 相关阅读:
    ios 10 更新所遇到的坑
    ios-coreText做微信点赞功能
    iOS 利用mask layer 使view中扣掉一块露出下边的view
    IOS-开发日记24
    ios 开发日记 23
    ios 开发日记 22-iOS 保持界面流畅的技巧
    ios 开发日记 21 -自动处理键盘事件的第三方库:IQKeyboardManager
    ios 开发日记 20
    ios 开发日记19-应用提交申请后加急审核
    ios开发日记-18上传appStore时,遇到错误,代码为ERROR ITMS-90049
  • 原文地址:https://www.cnblogs.com/wen-kang/p/10683672.html
Copyright © 2020-2023  润新知