Home » Flask 插件
  • 28
  • 08月

你打了个响指, 然后开始致力于你想写的棒极了的 Python 网络应用程序. 你写完一些页面 , 最后你需要着手处理令人讨厌的任务:处理和验证表单输入. 进入(开始)WTForms.

但是, 为什么我需要另一个框架呢?好吧, 一些网络应用程序框架采用数据库模型和 表单处理相结合的方法. 同时这对很基本的创建/更新视图函数是很方便的, 可能性是不是 每个你需要的表单都能直接映射到一个数据库模型. 也许你已经使用通用的表单处理框架 , 只是你想要定制这些表单域的 HTML 代码生成, 并且定义属于你的验证器.

使用 WTForms, 你能生成属于你的表单域的 HTML 代码, 此外我们允许你在模板中定 制它. 这允许你维持独立的代码和展现, 并把这些凌乱的参数保留在 Python 代码之外. 因 为我们争取松耦合, 同样的, 你应该可以在你喜欢的任意的模板引擎中这么做.

备注: 本人未过四级, 翻译水平有限, 欢迎指正.

本文目录

[TOC]

下载和安装

安装 WTForms …

Read More...

  • 28
  • 08月

本文介绍如何通过Flask-OAuthlib扩展实现QQ OAuth2登录。

Flask-OAuthlibOAuthlib的Flask扩展实现,主要特性:

  • 支持OAuth 1.0a, 1.0, 1.1, OAuth2客户端
  • 友好的API(和Flask-OAuth一样)
  • 与Flask直接整合
  • 等等……

Flask-OAuthlib提供了多个开放平台的示例代码,比如Google, Facebook, Twiter, Github, Dropbox, 豆瓣, 微博等,只是暂时没有QQ登录的示例代码。

[TOC]

QQ OAuth登录示例

下面是QQ登录的代码:

import os
import json
from flask import Flask, redirect, url_for, session, request, jsonify, Markup
from flask_oauthlib.client import …

Read More...

  • 28
  • 08月

在某些情况下,我们需要对模型的某个属性进行格式化。比如,默认情况下,日期时间显示出来会比较长,这时可能需要只显示月和日,这时候,列格式化就派上用场了。

比如,如果你要显示双倍的价格,你可以这样做:

class MyModelView(BaseModelView):
    column_formatters = dict(price=lambda v, c, m, p: m.price*2)

或者在Jinja2模板中使用宏:

from flask.ext.admin.model.template import macro

class MyModelView(BaseModelView):
    column_formatters = dict(price=macro('render_price'))

# in template
{% macro render_price(model, column) %}
    {{ model.price …

Read More...

  • 28
  • 08月

Flask-Admin中文入门教程

Flask-Admin是一个功能齐全、简单易用的Flask扩展,让你可以为Flask应用程序增加管理界面。它受django-admin包的影响,但用这样一种方式实现,开发者拥有最终应用程序的外观、感觉和功能的全部控制权。

本文是关于Flask-Admin库的快速入门。本文假设读者预先具有一些Flask框架的知识。

[TOC]

介绍

这个库打算做到尽可能的灵活。并且开发者不需要任何猴子补丁就可以获得期望的功能。

这个库使用一个简单而强大的概念——管理部件(administrative pieces,不太好翻译),是用视图方法构建的类。

例如,这是一个绝对有效的管理部件:

class MyView(BaseView):
    @expose('/')
    def index(self):
        return self.render('admin/myindex.html')

    @expose('/test/')
    def test(self):
        return self.render('admin/test.html')

如果用户访问index视图,模板文件admin …

Read More...

  • 28
  • 08月

Flask-Themes版本0.1.3, 主要提示无法找到模板文件,经过跟踪发现有个不知道算不算BUG的地方(330行):

def list_templates(self):
    res = []
    ctx = _request_ctx_stack.top
    if USING_BLUEPRINTS and not self.as_blueprint:
        fmt = '_themes/%s/%s'
    else:
        fmt = '%s/%s'
    for ident, theme in ctx.app.theme_manager.themes.iteritems():
        res.extend((fmt % (ident, t)).encode("utf8") for t in heme.jinja_loader.list_templates())
    return …

Read More...

  • 28
  • 08月

Flask-Mail扩展用于在Flask应用程序中发送邮件。

[TOC]

安装

pip install flask-mail

使用步骤

  1. 配置一些发送邮件的参数例如邮件发送服务器的地址,端口,是否加密等。
  2. 初始化flask-mail插件。
  3. 创建Message实例,设置发送的内容,地址和主题等信息
  4. 使用Mail实例针对Message的实例来发送

配置参数详解

下面这是在使用mail的时候需要指定的一些配置参数,需要在使用mail之前来设置相关的参数。

配置值 默认值 说明
MAIL_HOSTNAME localhost Hostname or IP address of the email server
MAIL_PORT 25 Port of the email server
MAIL_USE_TLS False Enable Transport Layer Security …

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...