一、一个最小的应用窥探flask基本结构
from flask import Flask #从flask中导入Flask
app = Flask(__name__) 创建一个实例
@app.route('/') #装饰器、设置路由,需要写在函数前面
def hello_world(): #定理一个方法(无参数)
return 'Hello World!' #返回字符串
#当浏览器访问时,将字符串返回到浏览器页面
if __name__ == '__main__':#判断是不是启动文件
#确保服务器只会在该脚本被 Python解释器直接执行
的时候才会运行,而不是作为模块导入的时候。
app.run() #运行
可以看出app.run()中没有传递参数,实质上里面是个默认参数
app.run(host ='127.0.0.1')代表本机。
还有以下集中设置方法
app.run(host='0,0,0,0') #代表外部网络可ui访问的公共的
app.run(host='127.0.0.1')#代表本机
二、调试模式
你启用了调试支持,服务器会在代码修改后自动重新载入,
并在发生错误时提供一个相当有用的调试器。
有两种途径来启用调试模式。
#第一种
再app实例化后调用
app.debug = True
#第二种
作为 run 方法的一个参数传入:
app.run(debug=True)
注意:绝对不能用于生产环境
三、路由
route() 装饰器把一个函数绑定到对应的 URL 上
#超级超级基础的演示示例
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello World'
/route()里面的东西就是匹配的内容
四、变量规则
·要给 URL 添加变量部分
·你可以把这些特殊的字段标记为 <variable_name>
#第一种,简简单单接收再返回个变量
@app.route('/user/<username>')
def show(username):
return 'User %s' % username
#第二种,简简单单接收再返回个带类型的参数
@app.route('/post/<int:post_id>')
def show_post(post_id):
return 'Post %d' % post_id
当然,还有下面几种设置类型的参数
类型名称 | 功能 |
---|---|
int | 可接收整数 |
float | 可接受浮点数 |
path | 默认、也可接受斜线 |
五、解决问题的唯一URL重定向
@app.route('/projects/')里面的内容必须双斜线!!!
六、自己构造URL
#假装有个写好的方法
@app.route('/user/<name>')
def showUserName(name):
return 'User %s' %name
#魔术开始,构建URL
@app.route('/redir/<n>')
def redir(n):
return redirect(url_for('showUserName',name=n))
它接受函数名作为第一个参数,也接受对应
URL 规则的变量部分的命名参数。
七、使用Flask-Script支持命令行选项
Flask-Script 扩展使用
pip 安装:
(venv) $ pip install flask-script
(注意venv,确保实在虚拟环境下)
#关键代码
from flask_script import Manager
#导入flask_script包
manager = Manager(app)
实例化manager
这样修改完,可以调整一下运行代码
if __name__ == '__main__':
manager.run()
手动debug升级为自动
命令:
python2 hello.py runserver -d -r --host 0.0.0.0
# -d debug 设置为debug模式,而不是run模式
# -r reload 设置自动重新载入(app.debug为True)
网友评论