跟我学Flask(二)-从HelloWorld讲起

从本节开始,会一步步带领大家从零开发一个网站,前面为理论教程,后面为项目实战

本节主要以实例为主,熟悉flask基本语法,下一节会介绍程序执行的流程


一、从简单的Hello World开始

我们先看一段最简单的代码,然后在进行具体的分析

# 导入Flask
from flask import Flask

# 创建Flask类的对象
app = Flask(__name__)

#定义路由地址
@app.route('/')
def hello():
    #返回数据
    return 'hello world'


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

在这里插入图片描述
在这里插入图片描述

执行代码后会在本地开启服务器,浏览器访问该网址就能看到页面上打印出了helloworld

127.0.0.1是本地主机地址,5000为默认的端口号

二、初始化参数

Flask 程序实例在创建的时候,需要默认传入当前 Flask 程序所指定的包(模块),接下来就来详细查看一下 Flask 应用程序在创建的时候一些需要我们关注的参数:
在这里插入图片描述

  • import_name
    • 必须传入该参数
    • Flask程序所在的包(模块),传 __name__ 就可以
    • 参数类型必须是字符串
    • 如果传入标准模块名,只会影响静态路径的访问,不会影响视图函数的访问。
  • static_path
    • 静态文件访问路径(不推荐使用,使用 static_url_path 代替)
  • static_url_path
    • 静态文件访问路径,可以不传,默认为:/ + static_folder
  • static_folder
    • 静态文件存储的文件夹,可以不传,默认为 static
  • template_folder
    • 模板文件存储的文件夹,可以不传,默认为 templates

三、路由参数配置

@app.route('/add',methods=['POST','GET','PUT','DELETE'])
def add():
    pass

上面代码作用:通过装饰器定义路由url地址,在浏览器访问此url时调用被装饰的函数

上面的add函数为视图函数,视图函数不能重名,但url可以重复,因为同一url地址可能有不同的请求方法,所以一般使用列表来存储路由映射

可以使用app.url_map获取路由映射表

第一个参数为路由地址,第二个参数为方法,方法可以指定多个,不指定时默认为GET

不使用装饰器也可以实现路由映射。

# 通过程序实例调用添加url规则,也可以实现路由映射。
app.add_url_rule('/123','add',add)

四、视图函数

上面代码中add函数为视图函数,视图函数主要作用为接受参数,业务处理,返回想用数据

具体接受参数问题会单独一篇文章说明

# 1、视图函数不能重名。
# @app.route('/')
# def hello2019():
    # a = 1
    # b = 2
    # return a,b
    # 不能返回字典
    # my_dict = {'a':'123'}
    # return my_dict
    # 不能返回列表
    # my_list = [1,2,3]
    # return my_list

  • 返回值类型

    return (需要返回的数据, 状态码, 响应信息)

    需要返回的数据必须为字符串,如果返回json类型数据,需要先进行转换

    所以返回值可以为元组,但元组中数据格式要与上面相符

  • 返回json数据

# 返回json数据方法一
@app.route("/")
def index():
    # return '<h1>hello world</h1>'
    data = {'itcast':'python18'}
    # 调用标注模块json中的dumps方法,把字典转成json
    # json.dump()
    return json.dumps(data)
    # return data

# 返回json数据方法二(常用)
@app.route('/json')
def hello():
    data = {'itcast':'sy_python18'}
    # jsonify是flask内置的函数,可以把字典转成json字符串
    # jsonify封装了响应的数据类型为application/json;image/jpg
    return jsonify(data)

猜你喜欢

转载自blog.csdn.net/qq_36217796/article/details/83715321