首页 > 其他 > 详细

Flask-1-03-HelloWorld

时间:2019-07-18 13:56:17      阅读:72      评论:0      收藏:0      [点我收藏+]

Flask程序运行过程:

所有Flask程序必须有一个程序实例

Flask调用视图函数后,会将视图函数的返回值作为响应的内容,返回给客户端。一般情况下,响应内容主要是字符串和状态码。

当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例。WSGI是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口,它封装了接受HTTP请求、解析HTTP请求、发送HTTP,响应等等的这些底层的代码和操作,使开发者可以高效的编写Web应用。

程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。根据每个URL请求,找到具体的视图函数。 在Flask程序中,路由的实现一般是通过程序实例的route装饰器实现。route装饰器内部会调用add_url_route()方法实现路由注册。

调用视图函数,获取响应数据后,把数据传入HTML模板文件中,模板引擎负责渲染响应数据,然后由Flask返回响应数据给浏览器,最后浏览器处理返回的结果显示给客户端。

 

了解一门框架从HelloWorld开始


 

新建文件helloworld.py:

# 导入Flask类
from flask import Flask

#Flask类接收一个参数__name__
app = Flask(__name__)

# 装饰器的作用是将路由映射到视图函数index
@app.route(/)
def index():
    return Hello World

# Flask应用程序实例的run方法启动WEB服务器
if __name__ == __main__:
    app.run()

这些就已经足够了,那么我们来运行一下helloworld.py(到保存helloworld.py的路径下):

$ cd /home/python/code
$ python helloworld.py

技术分享图片

能够看出服务器已经启动,地址是127.0.0.1 端口:5000,这时候去浏览器访问查看结果

技术分享图片

初始化参数:

  1. import_name: 模块名,flask以这个模块所在的目录为总目录,默认这个目录中的static为静态目录,templates为模板目录
  2. static_url_path:访问静态资源的url前缀, 默认值是static
  3. static_folder: 默认‘static’ 静态文件的目录
  4. template_folder: 默认‘templates’ 模板文件的目录
...

app = Flask(__name__,
            static_url_path="/python",  # 访问静态资源的url前缀, 默认值是static
            static_folder="static",  # 静态文件的目录,默认就是static
            template_folder="templates",  # 模板文件的目录,默认是templates
            )

...

配置参数

配置参数默认有3中方式:

  • app.config.from_pyfile(“config.cfg”)   从文件导入
  • app.config.from_object()  从对象中导入

  • app.config.from_envvar()  从环境变量中导入(应该没有人愿意用)

1. app.config.from_pyfile(“config.cfg”) :在项目的根目录下创建一个config.cfg文件

 1 from flask import Flask
 2 
 3 app = Flask(__name__,
 4             static_url_path="/python",  # 访问静态资源的url前缀, 默认值是static
 5             static_folder="static",  # 静态文件的目录,默认就是static
 6             template_folder="templates",  # 模板文件的目录,默认是templates
 7             )
 8 
 9 # 配置参数的使用方式
10 # 1. 使用配置文件
11 app.config.from_pyfile("config.cfg")
12 
13 
14 @app.route("/")
15 def index():
16     """定义的视图函数"""
17     return "helloworld"
18 
19 
20 if __name__ == __main__:
21     # 启动flask程序
22     app.run()
# config.cfg 文件
DEBUG = True

目录结构

技术分享图片

这样你重新运行一下

技术分享图片

2.app.config.from_object()  从对象中导入

  创建一个类,来定义类属性为配置项

# coding:utf-8

from flask import Flask

app = Flask(__name__,
            static_url_path="/python",  # 访问静态资源的url前缀, 默认值是static
            static_folder="static",  # 静态文件的目录,默认就是static
            template_folder="templates",  # 模板文件的目录,默认是templates
            )

# 2. 使用对象配置参数
class Config(object):
    DEBUG = True
# 使用方法加载设置的配置
app.config.from_object(Config)


@app.route("/")
def index():
    """定义的视图函数"""
    return "hello world"


if __name__ == __main__:
    # 启动flask程序
    app.run()

3.直接操作config对象

from flask import Flask

app = Flask(__name__,
            static_url_path="/python",  # 访问静态资源的url前缀, 默认值是static
            static_folder="static",  # 静态文件的目录,默认就是static
            template_folder="templates",  # 模板文件的目录,默认是templates
            )

# 3. 直接操作config的字典对象
app.config["DEBUG"] = True


@app.route("/")
def index():
    return "hello flask"


if __name__ == __main__:
    # 启动flask程序
    app.run()
   

读取配置参数

  1.如果你在当前能访问到app的情况下

    app.config.get("DEBUG")

  2.如果你无法拿到app这个对象时,你只需要导入current_app,也是可以拿到配置信息的

    current_app.config.get("DEBUG")

from flask import Flask, current_app

@app.route("/")
def index():
    """定义的视图函数"""
    # 读取配置参数
    # 1. 直接从全局对象app的config字典中取值
    # print(app.config.get("ITCAST"))
    # 2. 通过current_app获取参数
    # print(current_app.config.get("ITCAST"))

    return "hello flask"

app.run 参数

if __name__ == __main__:
    # 启动flask程序
    # app.run()
    app.run(host="0.0.0.0", port=5000, debug=True) # port指定的端口,debug 是唯一可以指定在这里的配置项

你在开发的状态下,如果局域网中不需要别的主机访问,你可以不指定(host),如果你想在同一局域网中,别的主机也可以访问到,并且你自己还想以回环地址(127.0.0.1)访问的话就可以指定为‘0.0.0.0’

扩展: 0.0.0.0  

IPV4中,0.0.0.0地址被用于表示一个无效的,未知的或者不可用的目标。 
* 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。 
* 在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。

用途总结:

    • 当一台主机还没有被分配一个IP地址的时候,用于表示主机本身。(DHCP分配IP地址的时候)
    • 用作默认路由,表示”任意IPV4主机”。
    • 用作服务端,表示本机上的任意IPV4地址。

 

Flask-1-03-HelloWorld

原文:https://www.cnblogs.com/Hannibal-2018/p/11206664.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!