参数传导与模块引入(重点)【flask web 1-32页】

来源:互联网 发布:mac py终端指的是什么 编辑:程序博客网 时间:2024/04/30 13:17

(venv)pip install flask

flask,Flask,app

from flask import Flaskapp = Flask(__name__)

从flask引入Flask类,创建一个叫app的程序实例,所有接受自客户端的请求都交给这个app程序实例(Flask类的对象)处理。Flask也用这个参数(app)决定了程序的根目录,以便能找相对于根目录的资源文件位置。
request(其他还有current_app,g,session)

from flask import request@app.route('/')def index():    user_agent= request.headers.get('User-Agent')    return '<p>Your brower is %s<p>' % user_agent

request请求对象,它封装了客户端发出的HTTP请求中的内容
make_response

from flask import make_response@app.route('/'):def index():    response = make_response('<h1>This document carries a cookie!</h1>')    response.set_cookie('answer','42')    return response

响应包括HTML页面,状态码,由首部组成的字典,那么多的参数不好解决,这时Response对象应运而生。
make_response函数可接受几个参数,response.set_cookie()可以设置cookie,统一返回一个response。
redirect,abort

from flask import redirect,abort@app.route('/')def index():    return redirect('http://www.example.com')@app.route('/user/<id>')def get_user(id):    user = load_user(id)    if not user:        abort(404)    return '<h1>Hello,%s</h1>' % user.name

redirect重定向函数,还有一个特殊响应由abort函数生成,用于处理错误。
user = load_user(id)解析传入的id,与model中的user对比。

(venv)pip install flask-script

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

使用Flask-Script支持命令行选项
现在运行python hello.py会显示一个用法消息,运行python hello.py runserver来启动Web服务器。
render_template

from flask import Flask,render_template#...@app.route('/user/<name>')def user(name):    reuturn render_template('user.html', name=name)

Flask提供的render_template函数JinJia2模板引擎集成到程序中。render_template函数的第一个参数是模板的文件名。随后的参数都是键值对。
(venv)pip install flask-bootstrap

from flask.ext.bootstrap import Bootstrap#...bootstrap = Bootstrap(app)

把程序实例app传入构造方法进行初始化,初始化Flask-boostrap之后,程序就可以使用一个包含所有Bootstrap文件的基模板。Flask-bootstrap中的基模板提供的一个网页框架,引入了Bootstrap中的所有CSS和JavaScript文件。

(venv)pip install flask-moment

Moment

from flask.ext.moment import Momentmoment = Moment(app)

Flask-moment依赖moment.js和jquery.js,Bootstrap已经引入jquery.js,还得在base.html引入moment.js库,如下:

{% block scripts %}{{ super() }}{{ moment.include_moment() }}{% endblock %}

在index.html中放置渲染时间的文本,如下:

<p>本地时间为{{ moment(current_time().format('LLL')}}.</p><p>现在过了{{ moment(current_time).fromNow(refresh=True) }}.</p>

datetime
以下代码吧变量current_time传入模板进行渲染:

from datetime import datetime@app.route('/')def index():    return render_template('index.html',                            current_time=datetime.utcnow())
0 0