flask基础
flask是python编写的一个WEB应用程序框架,flask由Armin Ronacher带领的一个Pocco团队开发,flask基于werkzeug
WSGI工具包个jinjia2模板引擎。
WSGI:Web Server Gateway Interface,即WEB服务器网关接口。
第一个flask程序
# 从flask中导入Flask,注意,flask是包名,Flask是模块名
from flask import Flask
# 初始化Flask
app = Flask(__name__)
# route是路由的意思,这里理解成路径,设置/则默认打开index页面,注意用单引号或者双引号包含起来
@app.route('/')
# 定义index函数,index函数名可以换成其他的,不一定强制要index,这里也就是相当于写一个页面
def index():
# return的内容,会被显示在页面中
return 'Hello,world!!!'
if __name__ == '__main__':
# 开始使用本地地址和指定的8080端口运行起来,如果不指定端口,则默认使用5000端口
# 如果不指定IP地址,默认只能本机访问,如果需要其他地方也能访问到本机开启的flask,则需要将地址换成0.0.0.0
app.run('127.0.0.1','8080')
以上简单介绍了第一个flask创建的web服务器。
图片中启动flask后,可以在控制台查看到信息。
debug
flask编写的程序和php不一样,每一次变动都需要重启服务器来执行变更,就显得很麻烦,为了应对这种问题,flask中的debug模式可以在不影响服务器运行下,执行更新每一次的变更
debug=True
只需要在app.run原基础上加上debug.True,或者直接app.debug=True
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello,world'
if __name__ == '__main__':
app.debug = True
app.run('127.0.0.1','8080')
# app.run('127.0.0.1','8080',debug=Ture)
route
程序中见到的@app.route(‘/’),相当于一个路径,可以是app.route(‘/user’),或者其他自定义的route,设置后,在url后面加上/user就可以访问了,每一个route后面都必须会有一个def函数跟着,代码解析一下。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello,vfree'
@app.route('/user')
def user():
return 'username:vFREE'
if __name__ == '__main__':
app.debug = True
app.run('127.0.0.1','8080')
我新建了一个route,然后写成/user,创建好后,访问127.0.0.1:8080/user,就会return回username:vFREE。实际上,flask的route在php中相当于文件名,而def中的内容,相当于文件内容。
识别传入的参数
给url添加可以传入变量的地方,只需要在route中的路径后面添加标记<value_name>,然后使用def接收,代码解释下。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello,vfree'
@app.route('/user/<username>')
def user(username):
return 'username:{0}'.format(username)
if __name__ == '__main__':
app.debug = True
app.run('127.0.0.1','8080')
看到第二个route出,其中加了/<username>
,这就是传入参数的接口,其中username相当于一个变量,将username放进def
user()中,然后用format带入username。
输入/user/vfree就会输出Hello,vfree,往下看,接着将讲如何判断GET和POST,以及输出传入的数据参数。
HTTP方法
这里主要讲GET和POST方法。
GET方法和POST方法
from urllib import request
from flask import Flask,request
app = Flask(__name__)
@app.route('/method',methods = ['GET','POST'])
def method():
if request.method == 'GET':
return '现在的方法是GET'
elif request.method == 'POST':
return '现在的方法是POST'
if __name__ == '__main__':
app.debug = True
app.run('127.0.0.1','8080')
仔细分析上面的代码,会发现多了一个request和methods,request主要是用于在判断时,获取当前页面的方法,如果直接打开URL,就会显示GET方法,如果使用POST,就会显示POST方法,如下图测试页面:
route中,methods要有s,并且方法用[ ]
括起来ÿ