从本节开始,会一步步带领大家从零开发一个网站,前面为理论教程,后面为项目实战
本节主要以实例为主,熟悉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)