1.

使用 session.get('name') 直接从会话中读
取 name 参数的值。和普通的字典一样,这里使用 get() 获取字典中键对应的值以避免未找
到键的异常情况,因为对于不存在的键, get() 会返回默认值 None 。

2.数据库迁移

使用shell 注册新用户,commit() 时出错,users 表没有“email”列

使用db init 创建迁移仓库,此命令会创建 migrations文件夹

migrate 子命令用来自动创建迁移脚本

使用 db upgrade 把迁移 应用到数据库中

3.新增页面流程:

表单:form.py

显示这个表单的模板:register.html

路由:views.py

具体功能实现:model.py

4.python编码

password = PasswordField('password', validators=[
Required(), EqualTo('password2', message='Passwords must match.')])

将 ‘password’换成 ‘密码’报错:

Python报错:unicodedecodeerror ascii codec can t decode byte 0xe5 in position 0 ordinal not in range 128

Python编码是 unicode -> str,解码就是 str -> unicode。
如果在Python文件中写入 # -*- coding:utf-8 -*- ,那么就使得Python 脚本文件是 UTF-8 编码的。

http://blog.163.com/xh_ding/blog/static/1939032892014119105749373/

5.test

test_password_setter (test_user_model.UserModelTestCase) ... ok
test_password_verification (test_user_model.UserModelTestCase) ... ok
test_valid_confirmation_token (test_user_model.UserModelTestCase) ... FAI
L

======================================================================
FAIL: test_valid_confirmation_token (test_user_model.UserModelTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "E:\userdata\PycharmProjects\flask_web\tests\test_user_model.py",
line 47, in test_valid_confirmation_token
self.assertTrue(u.confirm(token))
AssertionError: False is not true

----------------------------------------------------------------------
Ran 9 tests in 9.055s

FAILED (failures=1)

models.py:

    def confirm(self, token):
s = Serializer(current_app.config['SECRET_KEY'])
try:
data = s.loads(token)#解码令牌
except:
return False
if data.get('confirm') != self.id:
return False
self.confirmed =True
db.session.add(self)
return True

错误原因:"s.loads(token)"写成了“s.load(token)”

loads()方法:

    def load(self, f, salt=None):
"""Like :meth:`loads` but loads from a file."""
return self.loads(f.read(), salt)

6. 蓝本

blueprint把实现不同功能的module分开.

Factor an application into a set of blueprints.

Register a blueprint on an application at a URL prefix and/or subdomain.

Register a blueprint multiple times on an application with different URL rules.

比利牛斯獒犬 flask web的更多相关文章

  1. Flask web应用

    Flask web应用 一.介绍 最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask 的一个结构.下面是一些记录,在Centos 系统上使用Flask 架构部署一个简单的Python ...

  2. Flask web开发 请求拦截和预处理

    我们在开发WEB应用时,往往会需要对所有的url请求进行拦截,做些预处理,比如权限处理.日志等统一处理. 本文介绍一下Flask中的处理机制.我们通过一个简单的例子来说明. 1.编写一个简单应用 ru ...

  3. Flask web开发 处理Session

    本文我们在上篇文章<Flask web开发  处理POST请求(登录案例)>的基础上,来讲述Flask对session的支持. 在上面案例上,我们需要修改和新增如下功能 1.登录成功后的 ...

  4. [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题

    ---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...

  5. 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)

    目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构   前言 学习Python也有一个半月时间了,学到现在感觉 ...

  6. Flask Web中文教程

    Flask Web中文教程:http://docs.jinkan.org/docs/flask/

  7. 教程:在 Visual Studio 中开始使用 Flask Web 框架

    教程:在 Visual Studio 中开始使用 Flask Web 框架 Flask 是一种轻量级 Web 应用程序 Python 框架,为 URL 路由和页面呈现提供基础知识. Flask 被称为 ...

  8. 《Flask Web开发实战:入门、进阶与原理解析(李辉著 )》PDF+源代码

    一句话评价: 这可能是市面上(包括国外出版的)你能找到最好的讲Flask的书了 下载:链接: https://pan.baidu.com/s/1ioEfLc7Hc15jFpC-DmEYBA 提取码: ...

  9. 【问题记录】uwsgi部署并启动俩个几乎一样的python flask web app,发现有一个app响应时间非常长

    uwsgi在同一台linux上启动python flask web app(俩个), 发现第一个和第二个的简单性能测试差距非常大,差了将近一倍: 第一个结果: Concurrency Level: 1 ...

随机推荐

  1. linux中断子系统:中断号的映射与维护初始化mmap过程

    本文均属自己阅读源代码的点滴总结.转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:gzzaigcn2009@163.com 写在前沿: 好久好久没有静下心来整理一些东西了 ...

  2. openCV—Python(1)——初始化环境

    本系列博客主要參考自--Adrian Rosebrock:<Practical Python and OpenCV: An Introductory,Example Driven Guide t ...

  3. Java集合01----ArrayList的遍历方式及应用

                                                 Java集合01----ArrayList的遍历方式及应用 前面已经学习了ArrayList的源代码,为了学以 ...

  4. Retimer、Redriver(Level Shifter)

    重定时器Retimer和驱动器Redriver9(Level Shifter) 在高速串行通道的信号传输中,需要使用Redriver 和Retimer来保证信号传输的质量. Redriver,可以重新 ...

  5. HDU 3564 Another LIS splay(水

    题意: 给定一个空序列 插入n个数(依次插入 1.2.3.4··n) 以下n个数表示i插在哪个位置. 每插入一个数后输出这个序列的lis 然后... 由于每次插入的数都是当前序列最大的数 所以不会影响 ...

  6. 两个经典的文件IO程序示例

    前言 本文分析两个经典的C++文件IO程序,提炼出其中文件IO的基本套路,留待日后查阅. 程序功能 程序一打印用户指定的所有文本文件,程序二向用户指定的所有文本文件中写入数据. 程序一代码及其注释 # ...

  7. 基于EasyIPCamera实现的RTSP跨平台拉模式转发流媒体服务器

    本文转自博客:http://blog.csdn.net/xinlanbobo/article/details/53224445 上一篇博客<EasyIPCamera通过RTSP协议接入海康.大华 ...

  8. java编程之JDBC

    JDBC的常用类和接口 1.       DriverManager类 管理数据库中的所有驱动程序,其所有的方法都是静态方法,调用时无需实例化,通过类名就可以直接调用. 2.       Connec ...

  9. linux环境下启动tomcat7出现时间过长(已经编译完成的项目)问题解决!

    已经编译完成的项目,系统启动过程中,提示: INFO: Starting Servlet Engine: Apache Tomcat/7.0.81 Sep 20, 2017 3:17:32 PM or ...

  10. node.js npm 安装spm失败,竟然是版本的问题

    SPM v.1.1.2 With SeaJS   SPM v1.1.2使用指南 1.SPM用途 SeaJS提供了模块化开发的机制,在代码开发完后,还需要做产品发布相关的一些操作. 这些可以通过SPM来 ...