Home » All
  • 28
  • 08月

极具影响力的Flask经典书籍《Flask Web Development》中文版(《Flask Web开发:基于Python的Web应用开发实战》)已由人民邮电出版社出版,预计2014年12月19日到货,现已进入预售,定价59元人民币。从事Flask开发的同学可以关注下。

预售链接:http://product.china-pub.com/3770763

[TOC]

书籍信息

  • 书名: Flask Web开发:基于Python的Web应用开发实战
  • 作者: (美)Miguel Grinberg
  • 译者: 安道
  • 丛书名: 图灵程序设计丛书
  • 出版社:人民邮电出版社
  • ISBN:9787115373991
  • 上架时间:2014-12-1
  • 出版日期:2015 年1月
  • 开本:16开
  • 页码:224
  • 版次:1-1

内容简介

《Flask …

Read More...

  • 28
  • 08月

之前的文章中,我们讲到Flask中的SERVER_NAME主要做两件事:

  1. 协助Flask生成请求上下文之外的URL(比如邮件)
  2. 用于子域名支持

今天我们就来讲讲子域名这部分。

[TOC]

Flask子域名

一般用于数量比较少的子域名,一个模块对应一个子域名。先看下面一个例子:

modules.py:

from flask import Blueprint

public = Blueprint('public', __name__)

@public.route('/')
def home():
    return 'hello flask'

app.py:

app = Flask(__name__)
app.config['SERVER_NAME'] = 'example.com'
from modules import public
app.register_blueprint(public, subdomain …

Read More...

  • 28
  • 08月

Flask的SERVER_NAME解析

SERVER_NAME是Flask中比较容易用错的一个设置值,本文将介绍如何正确使用SERVER_NAME

本文目录:

[TOC]

Flask中的SERVER_NAME主要做两件事:

  1. 协助Flask在活动的请求(request)之外生成绝对URL(比如邮件中嵌入网站URL)
  2. 用于子域名支持

很多人误以为它可以做这两件事之外的其它事情。

第一件事:绝对URL

我们知道,url_for默认情况下是生成相对URL,它有个参数_external,如果设置为真,则会生成一个绝对URL(就是HTTP开头带域名等信息的)。若不指定SERVER_NAME,默认使用当前活动的请求(request)来生成URL。

下面举个例子演示一下:

# filename myapp.py
from flask import Flask, url_for

app = Flask(__name__)

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

@app …

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月

blohg是Python语言编写的基于Mercurial(或Git)版本控制系统的博客引擎,依托于Flask微型框架和一些扩展插件。

[TOC]

项目动机

众所周知,博客圈拥有大量的博客引擎,但是适用于程序员的并不多,他们经常和源码编辑器和版本控制系统打交道,并且用起来十分高效,因此,他们希望使用这些工具来代替所见即所得编辑器和管理后台。

blohg使用Mercurial(也可以是Git)作为版本控制系统,reStructuredText作为标记语言,Jinja2作为模板引擎。这些在Python生成系统都非常流行并且易于使用。

使用Mercurial的话,可以部署在Linux和Windows系统,比较容易,优先推荐这种方式。Git方式是实验性的,不一定能部署成功。

主要特性

  • 支持静态页面和博文
  • 支持tags标签
  • 支持URL别名
  • 支持生成全静态网站,可以放置在一些受限的环境
  • 博文/页面的元数据从Mercurial仓库中获取
  • 大量可用的reStructuredText指令,使得博客体验尽可能流畅
  • 容易定制的Jinja2模板
  • 可作为功能齐全的CMS系统
  • 分页功能
  • Atom Feeds功能

项目信息

Mercurial托管平台推荐:https://bitbucket.org

项目名称:blohg

项目作者:Rafael G …

Read More...

  • 28
  • 08月

SECRET_KEY是Flask中比较重要的一个配置值。本文介绍一种比较简单的生成SECRET_KEY的方法。

Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值,这是一个比较重要的配置值,应该尽可能设置为一个很难猜到的值,随机值更佳。

随机的问题在于很难判断什么是真随机。一个密钥应该足够随机。你的操作系统可以基于一个密码随机生成器来生成漂亮的随机值,这个值可以用来做密钥:

>>> import os
>>> os.urandom(24)
'\xca\x0c\x86\x04\x98@\x02b\x1b7\x8c\x88]\x1b\xd7"+\xe6px@\xc3#\\'

把这个值复制粘贴到你的代码,你就搞定了密钥。

设置方法:

app = Flask(__name__)
app.config['SECRET_KEY'] = '\xca\x0c\x86\x04 …

Read More...

  • 28
  • 08月

本文介绍Flask密码生成和密码验证的一种通用方法。所使用的函数为Flask框架内 置的函数:generate_password_hash, check_password_hash

本文目录:

[TOC]

密码加密简介

密码存储的主要形式:

  • 明文存储:肉眼就可以识别,没有任何安全性。
  • 加密存储:通过一定的变换形式,使得密码原文不易被识别。

密码加密的几类方式:

  • 明文转码加密:BASE64, 7BIT等,这种方式只是个障眼法,不是真正的加密。

  • 对称算法加密:DES, RSA等。

  • 签名算法加密:也可以理解为单向哈希加密,比如MD5, SHA1等。加密算法固定,容 易被暴力破解。如果密码相同,得到的哈希值是一样的。

  • 加盐哈希加密:加密时混入一段“随机”字符串(盐值)再进行哈希加密。即使 密码相同,如果盐值不同,那么哈希值也是不一样的。现在网站开发中主要是运 用这种加密方法。

密码生成函数:generate_password_hash

函数定义:

werkzeug.security …

Read More...

  • 28
  • 08月

Virtualenv入门基础教程

本文目录:

[TOC]

虚拟环境简介

VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响,它能够:

  1. 在没有权限的情况下安装新套件
  2. 不同应用可以使用不同的套件版本
  3. 套件升级不影响其他应用

虚拟环境是在Python解释器上的一个私有复制,你可以在一个隔绝的环境下安装packages,不会影响到你系统中全局的Python解释器。

虚拟环境非常有用,因为它可以防止系统出现包管理混乱和版本冲突的问题。为每个应用程序创建一个虚拟环境可以确保应用程序只能访问它们自己使用的包,从而全局解释器只作为一个源且依然整洁干净去更多的虚拟环境。另一个好处是,虚拟环境不需要管理员权限。

安装Virtualenv

大多数Linux发行版都提供一个virtualenv包。例如,Ubuntu用户就可以使用以下命令进行安装:

$ sudo apt-get install python-virtualenv

如果你使用的是Mac OSX,你可以使用 easy_install 安装virtualenv:

$ sudo easy_install virtualenv

如果你使用的是Microsoft Windows或者是任何没有提供官方virtualenv包的操作系统,接下来你会有一个稍微复杂的安装过程。

使用你的web浏览器,导航到 https://bitbucket.org/pypa/setuptools/ ,setuptools安装程序的主页,在"Downloads"栏目找到链接下载一个叫 …

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月

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