基于Python的Flask Web 开发 笔记 (1)

来源:互联网 发布:软件的分类 编辑:程序博客网 时间:2024/05/16 14:55

1)安装

$ pip install flask


2) 主要程序结构


from flask import Flask   from flask import requestapp = Flask(__name__)     #初始化@app.route('/')<span style="white-space:pre"></span># 路由,URL和对应处理函数def index():<span style="white-space:pre"></span># 视图函数,渲染返回页面    user_agent = request.headers.get('User-Agent')    return '<p>Your browser is %s</p>' % user_agent@app.route('/user/<name>')<span style="white-space:pre"></span># 动态路由,加参数的请求处理def user(name):    return '<h1>Hello, %s!</h1>' % nameif __name__ == '__main__':    app.run(debug=True)<span style="white-space:pre"></span># 启动服务器

3)请求响应循环

Flask从客户端收到请求时,要让视图函数能访问一些对象, request 对象就是一个很好的例子。

上述例子打印出了UA(用户代理)内容

Flask 使用上下文临时把某些对象变为全局可访问 ,有 程序上下文 和 请求上下文

程序上下文: current_app g 请求上下文: request  session

上下文需要推送后,才可调用。 app.route 或 app.add_url_rule() 生成路由映射


响应,

可返回响应内容和状态吗

设置cookie或重定向

from flask import Flaskfrom flask import requestfrom flask import make_responsefrom flask import redirectapp = Flask(__name__)@app.route('/')def index():    #resp = make_response('<h1>This doc carries a cookie</h1>')    #resp.set_cookie('answer', '42')    #return resp    return redirect('http://www.csdn.net')@app.route('/user/<name>')def user(name):    return '<h1>Hello, %s!</h1>' % nameif __name__ == '__main__':    app.run(debug=True)

abort 响应函数

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

Flask扩展

使用Flask-Script支持命令行选项

安装: $ pip install flask-script

from flask.ext.script import Manager manager = Manager(app)# ...if __name__ == '__main__':    manager.run()

$ python hello.py runserver --host 0.0.0.0      * Running on http://0.0.0.0:5000/      * Restarting with reloader

Web 服务器可使用http://a.b.c.d:5000/网络中的任一台电脑进行访问,其中“a.b.c.d”是服务器所在计算机的外网IP 地址 




0 0