一个医学老博士,工作九月余,不喜欢这份工作,期间看不到未来又回不到过去,犹豫不决,现在终于下定决心转行。转行之前希望自己能够完成两个任务:搭建一个网站和一个APP。人还是需要做能满足自己的事情。
之前学过一点前端的内容,今天开始学习flask框架的搭建。
##############################################
- 使用虚拟环境virtualenv
可以再python解释器中避免包的混乱和版本的冲突。
激活虚拟环境
source venv/bin/activate
结束虚拟环境
deactivate
from flask import Flask
app = Flask(__name__) #程序实例
@app.route('/') #route定义路由
def index():
return '<h1>Hello World!</h1>' #把index()函数注册为程序根地址的处理函数,index()视图函数
@app.route('/user/<name>') #<name>是动态部分,匹配静态部分的URL都会映射到这个路由
def user(name):
return '<h1>Hello, %s!</h1>' % name #user()视图函数,name为参数
if __name__=='_main__':
app.run(debug=True) #启动服务器,启动调试模式
- 请求-响应循环
from hello import app
from flask import current_app #current_app是程序上下文,当前激活程序的程序实例
app_ctx = app.app_context() #获得程序上下文
app_ctx.push() #激活程序
current_app.name #调用
- 响应函数
from flask import make_response
@app.route('/')
def index():
response = make_response('<h1>This document carries a cookie!</h1>') #make_response()函数可以接受1-3个参数,返回response对象
response.set_cookie('answer', '42') #对响应设置cookie
return response
- 重定向
from flask import redirect
@app.route('/')
def index():
return redirect('http://www.example.com') #重定向是响应的特殊类型,加载一个新地址
- 处理错误
from flask import abort
@app.route('/user/<id>')
def get_user(id):
user = load_user(id)
if not user:
abort(404)
return '<h1>Hello, %s</h1>' % user.name #abort()是特殊的响应函数,处理错误。错误发生时返回404