本文共 3348 字,大约阅读时间需要 11 分钟。
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
http://docs.jinkan.org/docs/jinja2/
http://flask-script.readthedocs.io/en/latest/
http://jinja.pocoo.org/docs/dev/templates/
pip install flask
# -*- encoding=UTF-8 -*-from flask import Flask, render_template, request, make_response, redirect, flash, get_flashed_messagesimport loggingfrom logging.handlers import RotatingFileHandlerapp = Flask(__name__)app.jinja_env.line_statement_prefix = '#'app.secret_key = 'nowcoder'@app.route('/index/')@app.route('/')def index(): res = '' for msg, category in get_flashed_messages(with_categories=True): res = res + category + msg + '' res += 'hello' return res@app.route('/profile/ /', methods=['GET', 'post'])def profile(uid): colors = ('red', 'green') infos = { 'nowcoder': 'abc', 'google': 'def'} return render_template('profile.html', uid=uid, colors=colors, infos=infos)@app.route('/request')def request_demo(): key = request.args.get('key', 'defaultkey') res = request.args.get('key', 'defaultkey') + ' ' res = res + request.url + '++' + request.path + ' ' for property in dir(request): res = res + str(property) + ' ' + str(eval('request.' + property)) + ' ' response = make_response(res) response.set_cookie('nowcoderid', key) response.status = '404' response.headers['nowcoder'] = 'hello~~' return response@app.route('/newpath')def newpath(): return 'newpath'@app.route('/re/ ')def redirect_demo(code): return redirect('/newpath', code=code)@app.errorhandler(400)def exception_page(e): response = make_response('出错啦~') return response@app.errorhandler(404)def page_not_found(error): return render_template('not_found.html', url=request.url), 404@app.route('/admin')def admin(): if request.args['key'] == 'admin': return 'hello admin' else: raise Exception()@app.route('/login')def login(): app.logger.info('log success') flash('登陆成功', 'info') return 'ok' # return redirect('/')@app.route('/log/ / /')def log(level, msg): dict = { 'warn': logging.WARN, 'error': logging.ERROR, 'info': logging.INFO} if dict.has_key(level): app.logger.log(dict[level], msg) return 'logged:' + msgdef set_logger(): info_file_handler = RotatingFileHandler('D:\\logs\\info.txt') info_file_handler.setLevel(logging.INFO) app.logger.addHandler(info_file_handler) warn_file_handler = RotatingFileHandler('D:\\logs\\warn.txt') warn_file_handler.setLevel(logging.WARN) app.logger.addHandler(warn_file_handler) error_file_handler = RotatingFileHandler('D:\\logs\\error.txt') error_file_handler.setLevel(logging.ERROR) app.logger.addHandler(error_file_handler)if __name__ == '__main__': set_logger() app.run(debug=True)
flask_script
# -*- encoding=UTF-8 -*-from flask_script import Managerfrom c2 import appmanager = Manager(app)@manager.option('-n', '--name', dest='name', default='nowcoder')def hello(name): print 'hello', name@manager.commanddef initialize_database(): 'initialize database' print 'database ...'if __name__ == '__main__': manager.run()
转载地址:http://iflnn.baihongyu.com/