• 初识 flask


    flask是一个轻量级框架,它默认依赖2个外部库:Jinja2 模板、 WSGI工具集--Werkzeug

    flask的使用特点是基本所有的工具使用都依赖于导入的形式去扩展,flask只保留了web开发的核心功能。

    通常:我们学习一个web框架只需要学会 如何使用路由、如何使用视图函数与模板语法、如何导入数据库 就可以跑通一个web项目

    安装Flask:pip install flask

    安装Flash:pip install flask

    1|0****一、Werkzeug简介

    代码示例:

    from werkzeug.wrappers import Request, Response
    
    '''
    werkzeug是一个WISGI工具包。它可以作为一个web框架的底层库。
    '''
    
    
    @Request.application
    def hello(request):
        print(request)
        return Response('Hello World!')
    
    
    if __name__ == '__main__':
        from werkzeug.serving import run_simple
    
        # run_simple('127.0.0.1', 4000, hello)
        run_simple('localhost', 4000, hello)
    

    2|0****二、初识flask

    小结:

    1 app.run() 调用 werkzeug.serving的run_simple(host, port, self, **options)
    2 self()等价于app(), app()调用Flask类的__call__方法
    3 Flask类的__call__方法返回了 self.wsgi_app(environ, start_response)
    4 flask程序的执行过程都在 self.wsgi_app(environ, start_response)中
    

    3|0****三、Debug模式
    4|0****四、导入配置的四种方式

    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,
        }
    
    • 方式一:
    from  flask import Flask
    app = Flask(__name__)
    
    #方式一
    app.debug=True
    app.secret_key="asdjja"
    
    @app.route("/")
    def index():
        return "ok"
    
    if __name__ == '__main__':
        app.run()
    
    • 方式二:以字典的形式
    from  flask import Flask
    app = Flask(__name__)
    
    #方式二,以字典的形式
    app.config['DEBUG']=True
    
    @app.route("/")
    def index():
        return "ok"
    
    if __name__ == '__main__':
        app.run()
    
    • 方式三:以文件的形式
    from  flask import Flask
    app = Flask(__name__)
    
    #方式三 ,以文件的形式
    app.config.from_pyfile("settings.py")
    
    @app.route("/")
    def index():
        return "ok"
    
    if __name__ == '__main__':
        app.run()
        
    '''settings.py'''
    DEBUG=True
    
    • 方式四:以类的形式
    from  flask import Flask
    app = Flask(__name__)
    
    #方式四 ,以类的形式(*****)
    app.config.from_object("settings.test")
    
    @app.route("/")
    def index():
        return "ok"
    
    if __name__ == '__main__':
        app.run()
    

    5|0****五、返回数据的四种方式

    from flask import Flask,render_template,redirect,jsonify,request
    app=Flask(__name__)
    
    '''
    1 返回字符串
    2 返回模板:render_template
    3 跳转:redirect
    4 返回 json
    
    '''
    
    @app.route("/")
    def index():
        return "ojbk"
    
    @app.route("/index")
    def index1():
        return render_template("index.html")
    
    @app.route("/home")
    def home():
        return redirect("/index")
    
    @app.route("/json")
    def json1():
        data_dic={'name':"jason",'age':38}
        # 返回字典序列化为json串
        return jsonify(data_dic)
    
    
    if __name__ == '__main__':
        app.run()
    

    templates->index.html

    模板文件夹的名字必须叫这个

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>用户列表</h1>
    </body>
    </html>
    

    博客原文https://www.cnblogs.com/XuChengNotes

  • 相关阅读:
    单位根反演
    安卓第十三天笔记-服务(Service)
    安卓第十二天笔记-广播
    安卓第十一天笔记-Intent与inter-filter配置
    安卓第十天笔记-fragment
    安卓第九天笔记-Activity
    安卓第八天笔记--网络编程二
    安卓第七天笔记--网络编程一
    安卓第六天笔记--ListView
    安卓第五天笔记-对话框
  • 原文地址:https://www.cnblogs.com/chanyuli/p/12153146.html
Copyright © 2020-2023  润新知