在这里flask开发web主要介绍一下flask的基本用法,我这里使用的是python3.6,venv 和pycharm
学习自 Flask Web开发实战
首先我们打开pycharm创建一个pythonflask的项目文件红线部分是我们选择的项目文件路径
我用的是最新的pycharm,创建好项目后可以看到pycharm自动为我们创建了venv的子文件夹
这样我们就可以直接使用python的venv独立的虚拟环境,如果不是使用pycharm的小伙伴可以通过命令的方式进行安装下面把教程贴给大家
对于venv不熟悉的小伙伴可以点击这里点击打开链接进行了解
在我们使用这个虚拟环境之前,我们需要先将他激活,Linux和Mac OS X的用户可以通过下面的命令来激活这个虚拟环境
source venv/bin/activate
命令执行后可以看到最前方出现(venv)
windows系统用户可以下面的命令来激活venv
venv\Script\activate
虚拟环境被激活后其中的Python解释器的路径就被添加到了PATH中,但这种改变只会影响当前的命令会话,激活虚拟环境的的命令会修改命令提示符,加入环境名:(venv)
接下来我们使用pip安装我们的flask
这里我们可以看到pip正在为我们的虚拟环境下载安装flask,安装成功后我们可以在项目里的venv下面的bin目录下看到我们刚刚安装的flask
1.路由 和 视图函数
接下来我们来看flask路由的声明路由的,在flak程序中使用app.route修饰器来声明路由
#在项目中导入flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
if __name__== '__main__':
#使用run方法来启动Flask集成的开发Web服务器
app.run()
接下来我们来启动这个项目可以开pycharm的控制台看到输出了这些信息
其中http://127.0.0.1:5000/就是我们的web的访问地址了以后会告诉大家如何修改这个地址和端口等,接下来我们打开浏览器将这个地址复制进去
在这里@app.route('/')使我们的路由def index():就是相对应的视图函数,视图函数和路由一一对,我们可以通过路由找到相对于的视图函数
我们可以看到浏览器输出了我们刚才在‘/’路由方法里面输出的‘Hello World’
接下来我们看一下flask的动态路由
#在项目中导入flask
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
#动态路由
@app.route('/yourname/<name>')
def yourname(name):
return '<span>你好,%s !</span>' % name
if __name__== '__main__':
#使用run方法来启动Flask集成的开发Web服务器
app.run()
接下来我再在浏览器中输入刚才的地址并拼接上/yourname/(您输入的数据)
这时候我们就可以看到浏览器输出我们return 出来的结果。‘哈哈哈’就是我们从地址传进去路由方法的数据。在@app.route('/yourname/<name>')中尖括号中的内容就是动态部分,flask会将动态部分作为参数传入函数,让函数进行一些我们预定的处理。
ps:在app.run()中我们可以写成 app.run(debug=True) 来开启调试模式
2.请求
我们先来看看程序和上下文,flask使用上下文临时把某些对象变为全局可访问。在flask中有程序上下文和请求上下文两种上下文全局变量
在flaskweb开发web一书中有一个列子
#在项目中导入flask
from flask import Flask
#引入rquest模块
from flask import request
app = Flask(__name__)
@app.route('/')
def index():
user_agent = request.headers.get('User-Agent')
return "%s" % user_agent
if __name__== '__main__':
#使用run方法来启动Flask集成的开发Web服务器
app.run(debug=True)
flask请求钩子:
在flask中有以上四种请求钩子,这里想给小伙伴们了解一下以后会带来使用的教程
重定向:
我们可以通过flask的redirect()辅助函数来进行重定向
#导入redrect
from flask import redirect
#重定向到百度
@app.route('/chong')
def chongdingxiang():
return redirect('http://www.baidu.com')
redirect()里面的参数就是我们要重定向去的网址,当我们访问http://127.0.0.1:5000/chong的时候就会重定向到百度首页
abort函数
在flask中有一种特殊的响应由abort函数生成,用于处理错误
#引入abort
from flask import abort
#页面返回404
@app.route('/bad')
def bad():
abort(404)
当我们访问http://127.0.0.1:5000/bad时浏览器会给我返回404页面
abort
不会把控制权还给调用它的函数,而是抛出异常把控制权交给服务器。
Flask扩展
添加扩展样例。
使用Flask-Script支持命令行选项
Flask的开发服务器(不适合生产环境的服务器),支持很多启动设置选项,但是只能在脚本中作为参数传给app.run()
函数。
可见,这种方式不是很方便,理想方式:使用命令行参数。
Flask-Script
是个Flask扩展,可以实现这个效果。
安装
pip install flask-script
- 1
转为Flask开发的扩展都暴露在flask.ext
命名空间下。
Flask-Script输出了一个名为Manager
的类,从flask.ext.script
中引入。
这种扩展的初始化方法适用于其他很多扩展:把程序实例作为参数传递给构造函数,像是托管。
不引入扩展的程序由`app.run()启动服务器,引入此扩展的,就交给扩展来启动服务器。
if __name__ == '__main__':
manager.run()
- 1
- 2
启动服务器:py hello.py runserver
也可以指定参数:py hello.py runserver --host 0.0.0.0
下一节会给大家带来flask模板的使用
如果遇到问题的话可以加我qq讨论一下 1311353736