Flask快速入门(2) — Flask四剑客与配置文件

目录

  • Flask四剑客
  • 配置文件的方式
    • 第一种方式
    • 第二种方式
    • 第三种方式
    • 第四种方式
    • 其他方式

Flask四剑客

在Django中后端返回响应有几种形式:render(前端渲染页面)、redirect(重定向跳转)、HttpResponse(直接返回)、JsonResponse(实际内部继承了HttpResponse,返回json字符串)。

在Flask中也有相对的返回机制:

  • render:前端渲染页面
  • redirect_:重定向跳转
  • jsonify:返回json字符串
  • return ‘xx‘:相当于HttpResponse
from flask import Flask, render_template, redirect, jsonify
app = Flask(__name__)

@app.route('/login')
def login():
    return render_template('login.html')  # 渲染login.html页面

@app.route('/index')
def index():
    return redirect('/login')  # 重定向跳转至'/login',显示login.html页面

@app.route('/test')
def test():
    data = {'name': 'Bob', 'age': 18}
    return jsonify(data)  # 页面响应结果:{"age":18,"name":"Bob"}

@app.route('/test1')
def test1():
    return 'ok'  # 页面响应结果:ok

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

login.html 页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>用户登录</h1>
    <form method="post">
        <input type="text" name="user">
        <input type="text" name="pwd">
        <input type="submit" value="登录">{{error}}
    </form>
</body>
</html>

注意:在django中html模板页面都是放在templates文件夹下,在flask中也需要新建一个templates文件夹,统一将html页面放在templates文件夹下

# 在Flask源码中,实例化__init__()方法中就已经定义了参数
def __init__(
        self,
        import_name,
        static_url_path=None,
        static_folder="static",  # 放置静态文件的文件夹名,同django中的static
        static_host=None,
        host_matching=False,
        subdomain_matching=False,
        template_folder="templates",   # 放置html页面的文件夹名,同django中的templates
        instance_path=None,
        instance_relative_config=False,
        root_path=None,
    ):
'''
:param template_folder: the folder that contains the templates that should be used by the application.  Defaults to ``'templates'`` folder in the root path of the application.
'''

配置文件的方式

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.route('/')
def index():
    return 'ok3'

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

直接在文件中用 app.debug = True 设置开启DEBUG模式。开启后项目会自动重启。这种方式只能配置 debug 和 secret_key

第二种方式

from flask import Flask
app = Flask(__name__)

app.config['DEBUG'] = True   # 通过config配置

@app.route('/')
def index():
    return 'ok3'

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

第三种方式

from flask import Flask
app = Flask(__name__)

app.config.from_pyfile('settings.py')  # 将配置写在配置文件中

@app.route('/')
def index():
    return 'ok3'

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

settings.py文件

DEBUG = True

第四种方式

from flask import Flask
app = Flask(__name__)

app.config.from_object('settings.TestConfig')  # 将配置写在配置文件的类中,导入使用

@app.route('/')
def index():
    return 'oD3'

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

settings.py文件

class BaseConfig:
    SESSION_COOKIE_NAME = 'session' 

class TestConfig(BaseConfig):
    DEBUG = True

class WorkConfig(BaseConfig):
    DEBUG = False

这种配置比较推荐使用,因为以后在开发过程中需要不同环境下配置不同,可以通过引用不同的类来配置不同的参数

其他方式

# 通过环境变量配置
app.config.from_envvar("环境变量名称")
# app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS'])
环境变量的值为python文件名称名称,内部调用from_pyfile方法

app.config.from_json("json文件名称")
JSON文件名称,必须是json格式,因为内部会执行json.loads

app.config.from_mapping({'DEBUG': True})
字典格式

原文地址:https://www.cnblogs.com/863652104kai/p/11600225.html

时间: 2024-08-06 04:03:39

Flask快速入门(2) — Flask四剑客与配置文件的相关文章

Flask的基本使用、四剑客和配置文件

Flask简介 安装 pip install flask 使用 # 1.导入flask from flask import Flask # 2.生成一个Flask对象,__name__表示当前文件的名字 app = Flask(__name__) # 3.添加路由,flask用的是装饰器的模式 # 注册路由,并写响应函数hello_world @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__ma

Flask快速入门(3) — flask路由的本质

目录 route():就是一个加在index()上的装饰器 add_url_rule():将匹配规定与视图函数的对应关系添加到路由 总结: from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'ok' if __name__ == '__main__': app.run() 从这个简单的代码入口,来剖析一下路由@app.route('/') route():就是一个加在index()上

网站后端_Python+Flask.0003.FLASK快速入门之Hello Word?

框架特点: 1. 非常小, 小到可称为微型框架 2. 可扩展, 设计初衷就是不会替开发者做太多决策,支持随时更换或动手实现扩展模块 3. 三依赖, 路由/调试/WSGI(由WERKZEUG提供的WEB服务器网关接口实现),模版系统(由JINJA2实现),签名(由ITSDANGEROUS实现) 快速安装: pip install flask 快速入门: #!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: 

Flask快速入门(17) — flask_session

Flask快速入门(17) - flask_session 作用:将默认保存的签名cookie中的值,保存到 redis/memcached/file/Mongodb/SQLAlchemy 安装:pip install flask-session 使用1: from flask import Flask,session from flask_session import RedisSessionInterface import redis app = Flask(__name__) conn=r

Flask快速入门(18) — 信号

Flask快速入门(18) - 信号 作用:Flask框架中的信号基于blinker,其主要就是让开发者可以在flask请求过程中定制一些用户行为 安装:pip install blinker 内置信号: request_started = _signals.signal('request-started') # 请求到来前执行 request_finished = _signals.signal('request-finished') # 请求结束后执行 before_render_templ

Flask快速入门(20) — 多app应用

Flask快速入门(20) - 多app应用 之前一直是一个app,如果有多个app该怎么进行分发呢? from werkzeug.wsgi import DispatcherMiddleware from werkzeug.serving import run_simple from flask import Flask,current_app # 注册两个app app1 = Flask('app01') app2 = Flask('app02') @app1.route('/index')

快速入门git第四步

一.获得git仓库有两个来源:1.在现有的目录下,通过git add 导入文件创建新的git仓库 2.从以后的git仓库下克隆下代码 1.在工作目录下新建git仓库,使项目进行了git的管理,只需要进行下列的命令: cd 文件名(进入目录)或者直接建立一个文件夹(mkdir zhen/cd zhen/) git init git init 做了写什么? 该命令的叫做初始化,初始化目录里面的文件和结构,在该目录下胡出现一个.git的文件,该文件含有git所需要的 资源和数据 2.克隆代码: git

【转】Flask快速入门

迫不及待要开始了吗?本页提供了一个很好的 Flask 介绍,并假定你已经安装好了 Flask.如果没有,请跳转到 安装 章节. 一个最小的应用 一个最小的 Flask 应用看起来会是这样: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run() 把它保存为 hello.py 

Flask快速入门,知识整理

一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器. “微”