Home » All
  • 28
  • 08月

Getting bigger with Flask

My last post about creating websites with Flask covered the steps to create a simple application. What happens when it grows bigger?

In this post I will take as example a common use case for a web app:

  • a public section (homepage, tour, signup, login)
  • a member only section (the ...

Read More...

  • 28
  • 08月

For some times now, I have been doing some projects in Python and some were web applications. Flask is a small framework to do exactly that and I have found it perfect for the job. It's really easy to use, fast, has good documentation and a good community.

This ...

Read More...

  • 28
  • 08月

《Explore Flask》是一本关于Flask Web应用程序开发模式和最佳实践的书籍。

目录大纲:

  • Preface
  • Coding conventions
  • Environment
  • Organizing your project
  • Configuration
  • Advanced patterns for views and routing
  • Blueprints
  • Templates
  • Static files
  • Storing data
  • Handling forms
  • Patterns for handling users
  • Deployment
  • Conclusion

在线阅读:http://exploreflask.com/

Read More...

  • 28
  • 08月

【转】FLASK使用小结

本文目录:

[TOC]

最简单的hello world

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/usr/bin/env python
# encoding: utf-8

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'hello world'

if __name__ == '__main__':
    app.run(debug=True)
    #app.run(host='127.0.0 ...

Read More...

  • 28
  • 08月

Python WTForms 2.0 发布

本文目录:

[TOC]

WTForms 是一个 Python 表单验证、渲染开发包。WTForms 2.0 于2014年5月发布,这是继 WTForms 1.0.5 之后第一个重要的版本。

新特性

  • Class Meta 可以从多方面定制 WTForms
  • CSRF 和 i18n 由扩展变成核心特性
  • Widget 渲染变更

不推荐使用的API

这些API仍然有效,但在很多情况下,会引发弃用警告。这些API在3.0的时候将完全移除,尽量写符合新API的代码,除非需要在 WTForms 1.X 和 2.X 交叉使用。

核心API

  • Form._get_translations 改为 Meta.get_translations
  • TextField ...

Read More...

  • 28
  • 08月

FLASK-CACHE源码简要分析

flask-cache源码文件包含下面三个文件:

  1. __init__.py : flask-cache主要功能,提供了对用户使用的各种函数;
  2. backends.py : 对werkzeug.contrib.cache进行一些封装以及扩展,为__init__.py提供多种缓存类型;
  3. jinja2ext.py : jinjia2的扩展,用于缓存jinjia2模版;

jinja2ext.py

首先我们来简要剖析下flask-cache扩展jinjia2,用于缓存jinjia2模版片段。该文件提供一个类:CacheExtension,该类的父类是jinjia2.ext.Extension,在父类的基础上对parse(self, parser)进行了扩展(修改)。具体的代码需要对jinjia2有些了解,尤其是jinjia2.ext.Extension,这里不啰嗦。

backends.py

这里包含了flask-cache对外提供的内置的缓存类型: NullCacheSimpleCacheMemcachedCacheGAEMemcachedCacheRedisCache ...

Read More...

  • 28
  • 08月

在云引擎BAE/SAE中,MySQL连接超时时间比较短,一般为30s,而不是默认的8小时,所以你需要在代码中检查是否超时,是否需要重连。

对于使用sqlalchemy的用户,需要在请求处理结束时调用 db.session.close() ,关闭当前 session ,将mysql连接还给连接池,并且将连接池的连接recyle时间设的小一点(推荐为10s)。

关键代码如下:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
app.config['SQLALCHEMY_POOL_RECYCLE'] = 10

db = SQLAlchemy(app)

@app.teardown_request
def teardown_request(response_or_exc ...

Read More...

  • 28
  • 08月

作者:老秋(转眼几年过去,小秋都变成老秋了……)

较早之前写过一篇“便宜否”的淘宝客应用项目,是用web.py写的,当时也写过不少web.py的项目,大都是自己在内部使用,“便宜否”是为朋友写的唯一在外部使用的。学习flask也是朋友Davidx的推介。

先介绍下优容网(yoro.com),这是我flask的第二个项目,主要是做女性化妆品分享社区,希望女生通过这个平台能找到适合自己肤质的化妆品。

为什么选择 Flask?而不是 Django 或 web.py?

这个项目还有一个主力是cloud,参于服务器架构到核心代码编写。先说说为什么选择flask,最初我们都使用过django,都不喜欢django的紧耦合;试了下web.py,又发现虽然东西小,要自己写的东西太多了,特别是form和db方面;最后决定了flask,有django一样的templates和models风格,又有web.py的小巧,而且还有许多强大的第三方插件,团队pocoo.org也是比较靠谱的。

项目结构

受到django的影响,yoro的项目结构我们使用了独立app的形式,里面包含app各自的models,views和forms ...

Read More...

  • 28
  • 08月

本文主要介绍在JDAppEngine(JAE)云引擎中部署Flask应用程序的方法,JAE中的Python Web应用程序主要是使用Gunicorn来做代理的。

下面就跟着我来创建一个简单的Flask应用程序吧~~~

[TOC]

一、注册账号

访问http://jae.jd.com注册就可以了。

二、新建应用

开始新建应用:

JAE创建应用按钮

填写应用信息:

JAE填写应用信息

创建好之后,可以在列表中看到应用的基本信息:

JAE应用基本信息

说明:JAE使用GIT管理代码,下面的例子中,为了方便,是直接在网页上修改代码的。

新建的应用代码结构应该是下面这样的:

JAE Python应用文件列表

上面5个文件中,最主要的是Profilewsgi.pyrequirements.txt这3个文件:

  • Profile 是Gunicorn的配置文件
  • wsgi.py 是主程序文件
  • requirements.txt 主要是处理依赖关系

三、部署Flask应用程序

这个例子是使用bottle框架来做的,下面把我们把它改造成一个简单的Flask应用程序:

第一步,修改requirements ...

Read More...

  • 28
  • 08月

本文简单介绍如何在Slackware环境下部署Flask应用程序,为了简单,没有使用uWSGI部署,而是简单了较简单的Gunicorn。其它Linux系统(比如Ubuntu和Centos)方法也是类似的。

Slackware版本:14.1

假设网站目录为:/tmp/wwwroot

[TOC]

安装基础环境

安装nginx

需要通过Slackwares.org来安装:

http://slackbuilds.org/repository/14.1/network/nginx/

安装python setuptools

需要通过Slackwares.org来安装:

http://slackbuilds.org/repository/14.1/python/pysetuptools/

安装pip

$ sudo easy_install pip
$ sudo pip install virtualenv

安装supervisor

安装

$ sudo pip ...

Read More...