Flask 的快速上手
1.第一个Flask web程序
安装Flask框架
命令:pip install Flask
所有的Flask程序都必须创建一个程序实例。Web服务器使用一种名为Web服务器的网关接口(Web Server Gateway Interface ,WSGI)的协议,把接收自客户端所有请求都转给这个对象进行处理,程序实例是Flask类的对象。
from flask import Flask
app = Flask(__name__)
from flask import Flask 这行代码表示从Flask框架中引入Flask对象
app=Flask(__name__)这行代码表示传入__name__这个变量来初始化Flask对象,Flask用这个参数来确定程序的根目录,__name__ 代表的是模块本身的名称
使用route()装饰器注明通过什么样的URL可以访问函数,同时在函数中返回要显示在浏览器中的信息。
@app.route('/')
def index():
return '这是url参数演示'
@app.route('/')这行代码代码指定了URL与python函数的映射关系,把处理URL和函数之间的关系程序定义为路由,把被装饰的函数index()注册为路由,此处注册给index()函数的路由为根目录。index()函数被称作为视图函数,视图函数必须要有返回值,返回为字符串或者HTML页面等类容。
Flask程序如何运行?
if __name__ == '__main__':
app.run(debug=True)
如果__name__=='__mian__',就要启用Web服务来运行上面的程序,服务器一旦开启,就会进入轮询状态。等待并处理请求。在app.run()中可以传入一些参数,比如debug,表示设置当前项目的debug模式。也就是调试模式,如果设置了调试模式,遇到程序错误,会在控制台输出具体的错误信息,否则只会笼统的报道应用服务器错误的信息,如果设置了调试模式,期间有修改了代码,系统会重新将修改的代码交给Web服务器,只要确保服务器没有缓存,便可以得到最新修改的代码结果。
app.run()还可以传入端口等信息,app.run(host='0.0.0.0',post=8080)host参数设置启用本机的IP地址可以访问,端口地址指定为8080,不指定5000。
URL 传递参数
Flask 如果要传递一个变量或者一个参数。可以通过地址栏和表单进行传递,通过浏览器的地址栏传递参数或者变量比较多,这样可以使用相同的URL指定不同参数,来访问不同的内容。
@app.route('/user/<name>')
def hello_world(name):
return '接收到名称为:%s'% name
Flask 通过URL传递参数,传递参数的语法是:'<参数名>'。
- string:默认的数据类型,接受没有任何斜杠的字符串
- int:整形
- float:浮点型
- path:和string类似,但是可以传递斜杠
- uuid:传递uuid的数据类型
- any:可以指定多条路径
注意:1.参数需要放在尖括号<>里面 。2.视图函数中需要设置同URL相同的参数名 。3.浏览器中的user是注重大小写的。
URL 反转
有时候,在制作网页重定向或者是模块文件的时候需要使用在视图函数中定义的URL,必须根据视图函数名称得到当前所指向的URL,这就是URL反转。简单说就是以视图函数作为参数传递给url_for,返回对应的url 。
from flask import Flask,url_for #导入Flask模块和url_for
app = Flask(__name__) #初始化
@app.route('/') #定义路由
def index(): #定义视图函数
url1=(url_for('news', id='100011')) #视图函数名为参数进行反转
return 'url反转的内容为:%s ' % url1 #返回反转的内容
@app.route('/user/<int:id>') #定义路由和参数
def news(id): #定义视图函数
return '请求的参数是:%d'% id #返回值
if __name__ == '__main__':
app.run(debug=True)
页面跳转和重定向
用户在访问某个页面的时候,希望登录后才能访问页面,如果没有登录就让浏览器让它从当前页面跳转到登录页面,这就涉及到重定向问题。重定向指的就是用户在打开某面的时候,期望页面跳转到另外一个指定的页面完成某种操作。
Flask 提供了redirect()重定向函数,该函数功能就是跳转到指定的URL ;
from flask import Flask,url_for,redirect #导入 Flask,url_for,redirect
app=Flask(__name__) #初始化
@app.route('/') #定义路由
def hello_word(): #定义视图函数
url1=url_for('user_login') #页面跳转
return redirect(url1) #重定位
@app.route('/user_login') #定义路由
def user_login(): #定义视图函数
return '这里用户登录界面,请先登录,才能访问首页' #返回值
if __name__ == '__main__':
app.run(debug=True)
重定向是将原本的url重新定向成为一个新的URL,可以实现页面的跳转,这里输入地址最先访问的hello_word()这个视图函数,但是hello_word()函数直接跳转到了user_login()视图上。