• Flask框架(二)


    flask框架(二)

    之前学习的Django有必备三板斧:render,HttpResponse,redirect,JsonResponse

    在flask也有,但是有些不同

    一、Flask4剑客

    1.直接返回字符串(return 后面加字符串)

    from flask import Flask
    app=Flask(__name__)
    
    @app.route('/')
    def  index():
       #直接返回字符串
        return  "ok"   #页面返回ok
      
    if __name__ == '__main__':
        app.run()
    

    2.返回html页面,渲染页面(render_template)

    from flask import Flask,render_template
    app=Flask(__name__)
    
    @app.route('/')
    def  index():
        #返回,渲染html
        name_dict={"name":"jason-gdx"}
        return render_template("index.html",name="jasongdx",name_dict=name_dict)  #返回index.html对应数据
    
    if __name__ == '__main__':
        app.run()
    

    注意:render_template()会去flask根目录下的templates里面寻找文件,所以给的参数路径时相对路径。

    3.跳转页面(redirect)

    from flask import Flask,redirect
    app=Flask(__name__)
    
    @app.route('/')
    def  index():
        #跳转页面
        return redirect("/login")
    
    if __name__ == '__main__':
        app.run()
    

    4.返回json数据(jsonify)

    from flask import Flask,jsonify
    app=Flask(__name__)
    
    @app.route('/')
    def  index():
        #返回json数据
        name_dict = [{'name': "jason-gdx"},{'name': "tank-sb"}]
        return  jsonify(name_dict)
    
    if __name__ == '__main__':
        app.run()
    

    二、flask配置文件的4种方式

    from  flask import Flask
    app=Flask(__name__)
    #第一种,这种方式只能配置两种(debug,secret_key)
    app.debug=True
    app.secret_key="123123"
    #第二种,以字典的形式
    app.config['DEBUG']=True
    #第三种,以文件的形式,导入配置好的文件
    app.config.from_pyfile("settings.py")
    
    #第四种以类的形式(推荐)
    app.config.from_object('settings.DevelopmentConfig')
    
    @app.route('/login')
    def login():
        print(123)
        return "ojbk_login"
    
    if __name__ == '__main__':
        app.run()
    

    settings.py

    class Config(object):
        DEBUG = False
        TESTING = False
        DATABASE_URI = 'sqlite://:memory:'
    
    
    class ProductionConfig(Config):
        DATABASE_URI = 'mysql://user@localhost/foo'
    
    
    class DevelopmentConfig(Config):
        DEBUG = True
    
    
    class TestingConfig(Config):
        TESTING = True
    

    flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为:

    {
            'DEBUG':                                get_debug_flag(default=False),  是否开启Debug模式
            'TESTING':                              False,                          是否开启测试模式
            'PROPAGATE_EXCEPTIONS':                 None,                          
            'PRESERVE_CONTEXT_ON_EXCEPTION':        None,
            'SECRET_KEY':                           None,
            'PERMANENT_SESSION_LIFETIME':           timedelta(days=31),
            'USE_X_SENDFILE':                       False,
            'LOGGER_NAME':                          None,
            'LOGGER_HANDLER_POLICY':               'always',
            'SERVER_NAME':                          None,
            'APPLICATION_ROOT':                     None,
            'SESSION_COOKIE_NAME':                  'session',
            'SESSION_COOKIE_DOMAIN':                None,
            'SESSION_COOKIE_PATH':                  None,
            'SESSION_COOKIE_HTTPONLY':              True,
            'SESSION_COOKIE_SECURE':                False,
            'SESSION_REFRESH_EACH_REQUEST':         True,
            'MAX_CONTENT_LENGTH':                   None,
            'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),
            'TRAP_BAD_REQUEST_ERRORS':              False,
            'TRAP_HTTP_EXCEPTIONS':                 False,
            'EXPLAIN_TEMPLATE_LOADING':             False,
            'PREFERRED_URL_SCHEME':                 'http',
            'JSON_AS_ASCII':                        True,
            'JSON_SORT_KEYS':                       True,
            'JSONIFY_PRETTYPRINT_REGULAR':          True,
            'JSONIFY_MIMETYPE':                     'application/json',
            'TEMPLATES_AUTO_RELOAD':                None,
        }
    
  • 相关阅读:
    网站搜索功能lucene
    RabbitMQ消息队列
    zookeeper
    RPC+SOA+dubbo
    石英定时任务-quartz
    通用mapper、图片上传、nginx
    通用mapper和分类实现
    后台商品管理功能实现
    构建框架
    海量数据的并发处理
  • 原文地址:https://www.cnblogs.com/chmily/p/12163429.html
Copyright © 2020-2023  润新知