flask摘记

Blueprint

路由:处理URL到python函数的映射的函数,如下

1 @app.route(‘/‘)
2     def index():
3     return ‘<h1>Hello World!</h1>‘

官方文档:why blueprint?http://flask.pocoo.org/docs/0.11/blueprints/#why-blueprints

flask web中引入blueprint的例子:
要方便在不同情况下使用不同的配置-> 在app/__init__.py中使用一个工厂函数create_app(config_name):来根据config_name创建app-> 蓝本可以创建一个休眠的路由(在工厂函数create_app()中注册以“激活”这个路由)。

例子:app/main 文件夹为蓝本文件夹,在app/main/__init__.py创建一个蓝本,代码如下

1 from flask import Blueprint
2
3 main = Blueprint(‘main‘, __name__)
4
5 from . import views, errors

Blueprint的第一个参数为我们创建的蓝本的名字。

为了避免循环导入,views, errors在末尾import,在error的开头有from . import main, ‘.‘表示同文件夹下。

如之前所述,这个蓝本必须在工厂函数中注册

1 def create_app(config_name):
2     # ...
3     from .main import main as main_blueprint
4     app.register_blueprint(main_blueprint)
5     return app

我们这里要将error和view写为蓝本,写法的细节会稍有不同

比如app/main/error.py

 1 from flask import render_template
 2 from . import main
 3
 4 @main.app_errorhandler(404)
 5 def page_not_found(e):
 6     return render_template(‘404.html‘), 404
 7
 8 @main.app_errorhandler(500)
 9 def internal_server_error(e):
10     return render_template(‘500.html‘), 500

如果使用errorhandler修饰器,那么只有蓝本中的错误才能触发处理程序。要想注册程序全局的错误处理程序,必须使用app_errorhandler。

app/main/view.py

1 @main.route(‘/‘, methods=[‘GET‘, ‘POST‘])
2 def index():
3     form = NameForm()
4     if form.validate_on_submit():
5         #...6       return redirect(url_for(‘.index‘))
7     return render_template(‘index.html‘,
8                            form=form, name=session.get(‘name‘),
9                            known=session.get(‘known‘, False),
10                            current_time=datetime.utcnow())

1.路由定义使用蓝本提供的main.route

2.url_for()的第一个参数是路由的端点名,现在要加上一个蓝本的命名空间,写为main.index,这个main是可以省略的

further:https://exploreflask.com/en/latest/blueprints.html

时间: 2024-12-16 22:47:04

flask摘记的相关文章

读狼书,重温flask

最近做个简单的MIS系统, 趁机读<flask web 开发实战 入门.进阶与原理解析> 李辉.  由于是flask官方团队的人写的.方方面面都很细致. 很多写法.配置,和之前0.X时代也有了不同.正好整理一下. 打破书里的顺序,把自己不熟的地方摘记出来,随写随改. 因为我现在都是前后分离的写法了,所以涉及template, form的知识点就略过了. 感觉需要注意的典有点琐碎.或者说自己之前学的也都是一鳞半爪,结果到处是洞. 所以按自己归纳的topic统一整理一下 未分类 flask并不是m

Python:hashlib加密模块,flask模块写登录接口

hashlib模块 主要用于加密相关的操作,(比如说加密字符串)在python3的版本里,代替了md5和sha模块,主要提供 sha1, sha224, sha256, sha384, sha512 ,md5 这些加密方式 import  hashlib m = hashlib.md5()   #用md5加密的方式(md5加密后无法解密),创建一个md5的对象 m.update(b"Hello")  #b代表二进制字节bytes,把字符串hello转成字节,然后加密:用b给一个变量转换

flask 安装

flask官网 : http://docs.jinkan.org/docs/flask/installation.html (基本上就是按照官网思路一点一点来的) 1,安装easy_install: wget -q http://peak.telecommunity.com/dist/ez_setup.py python ez_setup.py 2,安装 virtualenv sudo easy_install virtualenv 3,因为报错,所以要升级Python至2.7 wget htt

flask蓝图的使用

首先,我对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化.大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构 看一下视图方法: #views.py 1 from app import app 2 3 4 @app.route('/user/index') 5 def index(): 6 return 'user_index' 7 8 @app.route('/user/show') 9 def show(): 10 return 'user_show' 11

flask开发restful api

在此之前,向大家说明的是,我们整个框架用的是flask + sqlalchemy + redis.如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端.如果flask还不是很熟悉,我建议先到这个网站简单学习一下,非常非常简单.http://dormousehole.readthedocs.org/en/latest/ 一直想写一些特别的东西,能让大家学习讨论的东西.但目前网上的很多博客,老么就按照官方文档照本宣读,要么直接搬代码,什么都不说明.我写这个系列的博客,

怎么使用Python和Flask在Linux上创建应用

无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会,也是一个从零基础开始学习python开发(http://www.maiziedu.com/course/python/)的一个好机会,pyhon学起来很有趣且在实际的应用如yum包管理器中很有用. 给大家分享一个关于很赞的教程贴,本篇教程会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如每个进程的内存使用,CPU百分比之类有用的信息. 前置需求 Python基础.列表.类.函

flask技巧(不断更新)

flask获取真实ip if request.headers.getlist("X-Forwarded-For"):    ip = request.headers.getlist("X-Forwarded-For")[0]else:    ip = request.remote_addr 未完成

#SORA#flask实验

唉,最近熬夜看动漫,早上还测了个蛋疼的数学测验,我也是醉了,今天得早点睡. 实验目的:在flask应用中使用多个http头并借助PUT,POST提交数据 源代码: __author__ = 'hochikong' from flask import Flask,request from flask.ext.restful import Resource,Api,reqparse app = Flask(__name__) api = Api(app) todos = {'task':'get t

运维的我要学开发--Flask(1)

Flask默认使用的是Jinja2的模板引擎,下面将会介绍下Flask提供给模板的一些方法. #-*- coding: utf-8 -*- #导入一些函数 from flask import Flask from flask import render_template,g #创建一个app app = Flask(__name__) #创建一个装饰器 @app.route("/") @app.route("/index") def index(): string=