❥Flask❥----介绍

Flask简介

  Flask是一个python编写的轻量级 Web 框架. 其中 WSGI 采用 Werkzeug 魔板语法使用Jinja2 的 同步框架

安装

pip install flask==1.1.1

  下载好后他会自动安装 Werkzeug 和 jinja2

Flask的简单使用

  使用3句代码来启动一个 Flask服务

# Flask模块的导入
from flask import Flask

# 实例化Flask得到 app 对象
app = Flask(__name__) # 声明当前执行目录

# 启动flask
app.run()

   升级版

from flask import Flask
# 实例化产生一个Flask对象 app
= Flask(__name__)
# 将
'/'和视图函数hello_workd的对应关系添加到路由中 @app.route('/') # 1. v=app.route('/') 2. v(hello_world) def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() # 最终调用了run_simple()

 配置文件

  不急 先来了解下flask的配置文件

   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,
    }

 导入方式:

# 配置文件
# 方式一 但是这种配置文件只能配置两种 app.debug
= True app.secret_key = '123' # 方式二 以字典的形式 app.config['DEBUG'] = True # 方式三 以文件的形式 app.config.from_pyfile('settings.py') # 自己写py文件 # 方式四 以类的形式(推荐) app.config.from_object('settings.DevelopmentConfig')

.......

   使用类的形式 类的写法

# DEBUG = True

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必会三板斧

from flask import Response,redirect, render_template
# Response 响应数据
# redirect 重定向
# render_template 提供html页面
app = Flask(__name__)

@app.route('/response')
def response():
    return Response('我是response返回的')


@app.route('/redirect')
def redirec():
    return redirect('/response')


@app.route('/render')
def render():
    return render_template('text.html', name='sjjsjss') # 可以传参数  支持魔板语法 和python的一模一样


if __name__ == '__main__':
    app.run(debug=True)

 外送两板斧 flask的小儿子

jsonify

@app.route('/json')
def json():
    name_list = [{'name': "jason-gdx"},{'name': "tank-sb"}]
    res = jsonify(name_list)
    print(res)
    return jsonify(name_list) # application/json
发的直接是文件

@app.route('/file')
def file():
    return send_file('templates/text.html') # 自动转content-type

 request

from flask import request
@app.route('/login', methods=['POST', 'GET']) # 可以在app.route里面指定 methods
def login():
    # 导入模块request 我们这里来一一获取里面的数据
    # 判断request里面的提交方法
    if request.method == 'GET':
        return render_template('login.html')
    print(request.method) # POST
    print(request.data) # b'' 没有指定cont-type的 数据
    print(request.json) # None
    print(request.url) # http://127.0.0.1:5000/login?adfadsf=asdfasdf
    print(request.path) # /login
    print(request.headers) #
    print(request.values) # get 和 post 提供的所有值  用来查看数据 CombinedMultiDict([ImmutableMultiDict([('adfadsf', 'asdfasdf')]), ImmutableMultiDict([('user', '123123'), ('password', '123123123')])])
    print(request.form) # 提供方法 to_dict ImmutableMultiDict([('user', '123123'), ('password', '123123123')])
    print(request.host_url) # http://127.0.0.1:5000/
    print(request.host) # 127.0.0.1:5000
    print(request.args) # 提供方法 to_dict get 的值 ImmutableMultiDict([('adfadsf', 'asdfasdf')])

    print(request.files) # 文件
    # 文件获取
    my_file = request.files.get('my_file')
    my_file.save(my_file.filename)

    print(request.cookies) # 他也是字典

  

猜你喜欢

转载自www.cnblogs.com/lddragon/p/11837668.html
今日推荐