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