Home » digwtx
  • 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蓝图中使用动态URL前缀这个特性。

[TOC]

让我们先来看一个简单的例子,假设有下面这样一个蓝图(是关于用户主页的):

from flask import Blueprint, render_template

profile = Blueprint('profile', __name__)

@profile.route('/<user_url_slug>')
def timeline(user_url_slug):
    # Do some stuff
    return render_template('profile/timeline.html')

@profile.route('/<user_url_slug>/photos')
def photos(user_url_slug):
    # Do some stuff
    return render_template('profile/photos.html')

@profile.route('/<user_url_slug>/about')
def about(user_url_slug …

Read More...

  • 28
  • 08月

Please note: This is a collaboration piece between Michael Herman, from Real Python, and Sean Vieira, a Python developer from De Deo Designs.

Articles in this series:

Read More...

  • 28
  • 08月

Flask信号机制(signals)

本文介绍Flask的信号机制,讲述信号的用途,并给出创建信号、订阅信号、发送信 号的方法。

[TOC]

信号(signals)

Flask信号(signals, or event hooking)允许特定的发送端通知订阅者发生了什么( 既然知道发生了什么,那我们可以知道接下来该做什么了)。

Flask提供了一些信号(核心信号)且其它的扩展提供更多的信号。信号是用于通知 订阅者,而不应该鼓励订阅者修改数据。相关信号请查阅文档。

信号依赖于Blinker库。

钩子(hooks)

Flask钩子(通常出现在蓝图或应用程序现存的方法中,比如一些内置装饰器,例如 before_request)不需要Blinker库并且允许你改变请求对象(request)或者响应对 象(response)。这些改变了应用程序(或者蓝图)的行为。比如before_request() 装饰器。

信号看起来和钩子做同样的事情。然而在工作方式上它们存在不同。譬如核心的 before_request()处理程序以特定的顺序执行,并且可以在返回响应之前放弃请求 。相比之下 …

Read More...

  • 28
  • 08月

Windows搭建FLASK开发环境

本文介绍Windows下如何从零开始搭建Python + Flask开发环境。

[TOC]

安装Python 2.7

访问https://www.python.org/,进入下载页面,下载Python 2.7系列的WINDOWS版本。

安装之后需要把Python相关的路径加入到PATH环境变量中(假如安装在 D:\Python27):

  • D:\Python27
  • D:\Python27\Scripts

安装setuptools(easy_install)

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py

安装virtualenv

使用easy_install命令安装virtualenv:

easy_install virtualenv

相关阅读:Virtualenv入门基础教程

创建虚拟环境

纯净的虚拟环境:

virtualenv …

Read More...

  • 28
  • 08月

本文介绍如何在Flask项目中集成富文本编辑器xhEditor,并实现图片上传、文件 上传、视频上传、远程抓图等(包括拖拽上传)功能。

[TOC]

xhEditor简介

xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化HTML编辑器,基于网 络访问并且兼容IE 6.0+, Firefox 3.0+, Opera 9.6+, Chrome 1.0+, Safari 3.22+。

xhEditor曾经是我比较喜欢的编辑器,也是率先支持拖拽上传的编辑器之一。 xhEditor在当年是优秀的编辑器,功能足够强大,使用体验也相当好,拖拽上传是 我最喜欢的功能,只可惜已经停止开发了。xhEditor最后的稳定版本是1.1.14,至 今已超过2年未更新(2013年发布了开发版本1.2.1),作者已经停止开发和维护了 ,社区论坛完全不能打开。

由于xhEditor基于jQuery开发,而对于新版本的jQuery,它并不能很好的支持,只 …

Read More...

  • 28
  • 08月

Flask-Admin 1.0.9 发布

继今年4月发布1.0.8之后,经过7个月的开发,在12月迎来了1.0.0版本。修复了大量 BUG,支持Bootstrap 3和WTForms 2.x,并增加geoalchemy2后端支持。

Highlights:

  • Bootstrap 3 support
  • WTForms 2.x support
  • Updated DateTime picker
  • SQLAlchemy backend: support for complex sortables, ability to search for related models, model inheritance support
  • Customizable URL generation logic for all views
  • New generic filter …

Read More...

  • 28
  • 08月

本文介绍如何在Flask项目中集成富文本编辑器CKeditor,并实现图片上传、文件上传、视频上传等功能。

CKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多WEB项目和大型网站均采用了CKeditor。

[TOC]

下载CKeditor

访问CKeditor官方网站,进入下载页面,选择Standard Package(一般情况下 功能足够用了),然后点击Download CKEditor按钮下载ZIP格式的安装文件。如果 你想尝试更多的功能,可以选择下载Full Package

下载好CKeditor之后,解压到Flask项目static/ckeditor目录即可。

在Flask项目中使用CKeditor

在Flask项目中使用CKeditor只需要执行两步就可以了:

  1. <script>标签引入CKeditor主脚本文件。可以引入本地的文件,也可以引用CDN上的文件。
  2. 使用CKEDITOR.replace()把现存的<textarea …

Read More...

  • 28
  • 08月

在本地调试Flask应用程序,如果使用IE浏览器访问,会经常出现卡住(假死)现象 ,这是一个比较烦人的问题。

其实解决方法也比较简单,只要给app.run加上一个threaded=True参数或者 processes=N参数(N改为实际数值)。假如:

if __name__ == '__main__':
    app.run(threaded=True)
    # 或者
    # app.run(processes=3)

参数说明:

  • threaded 多线程支持,默认不开启
  • processes 进程数量,默认为1个

如果使用了Flask-Script来部署应用,可以给runserver命令加上--threaded参数或者 --processes N参数(参数意义同上)。例如:

python …

Read More...

  • 28
  • 08月

本文介绍如何在Flask项目中集成富文本编辑器UEditor,并实现文件上传、图片上传、视频上传及涂鸦功能。

[TOC]

UEditor简介

UEditor是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码。

由于1.4.2版本之后的版本与之前版本存在较大的差异,本文以1.4.3版本为蓝本。

具体文档参见:http://fex-team.github.io/ueditor/

在Flask项目中加入UEditor

下载UEditor:

访问UEditor首页,下载1.4.3 PHP UTF-8版本的UEditor,并解压到Flask应用程序的static目录。解压之后的目录结构是这样的:

| static/
| | ueditor/
| | |+dialogs/
| | |+lang/
| | |+php/
| | |+themes/
| | |+third-party/
| | |-config.json
| | |-index.html …

Read More...