摘要: 关系型数据库使用关系把不同表中的行联系起来。上篇随笔中介绍的用户和角色之间是一种简单的关系。即角色到用户的一对多关系,因为一个角色可属于多个用户,而每个用户都只能有一个角色。这种关系在模型中的表示方法如下: 关系使用users 表中的外键连接了两行。添加到User 模型中的role_id 列被定义为 阅读全文
posted @ 2018-01-29 20:47 木易森林 阅读(1301) 评论(0) 推荐(0) 编辑
摘要: 模型这个术语表示程序使用的持久化实体。在ORM 中,模型一般是一个Python 类,类中的属性对应数据库表中的列。 Flask-SQLAlchemy 创建的数据库实例为模型提供了一个基类以及一系列辅助类和辅助函数,可用于定义模型的结构。下面的实例中分别定义rules和users的模型: 类变量__t 阅读全文
posted @ 2018-01-29 20:23 木易森林 阅读(502) 评论(0) 推荐(0) 编辑
摘要: Flask-SQLAlchemy 是一个Flask 扩展,简化了在Flask 程序中使用SQLAlchemy 的操作。SQLAlchemy 是一个很强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy 提供了高层ORM,也提供了使用数据库原生SQL 的低层功能。 和其他大多数扩展一样,F 阅读全文
posted @ 2018-01-29 16:28 木易森林 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 安装时候的日志如下: 错误解决方案: 1.检查系统是否安装了libmysqlclient-dev,没有安装的话使用sudo apt-get install libmysqlclient-dev安装 2.sudo updatedb,locate mysql_config找到mysql_config的安 阅读全文
posted @ 2018-01-29 16:26 木易森林 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 请求完成后,有时需要让用户知道状态发生了变化。这里可以使用确认消息、警告或者错误提醒。一个典型例子是,用户提交了有一项错误的登录表单后,服务器发回的响应重新渲染了登录表单,并在表单上面显示一个消息,提示用户用户名或密码错误。 这种功能是Flask 的核心特性。如下面例子所示,flash() 函数可实 阅读全文
posted @ 2018-01-29 15:45 木易森林 阅读(665) 评论(0) 推荐(1) 编辑
摘要: 在新版hello.py 中,视图函数index() 不仅要渲染表单,还要接收表单中的数据。更新后的index() 视图函数如下: app.route 修饰器中添加的methods 参数告诉Flask 在URL 映射中把这个视图函数注册为GET 和POST 请求的处理程序。如果没指定methods 参 阅读全文
posted @ 2018-01-29 15:44 木易森林 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 最新版的hello.py 存在一个可用性问题。用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认。之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果这个请求是一个包含表单数据的POST 请求,刷新页面后会再次 阅读全文
posted @ 2018-01-29 15:44 木易森林 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 默认情况下,Flask-WTF 能保护所有表单免受跨站请求伪造(Cross-Site Request Forgery,CSRF)的攻击。恶意网站把请求发送到被攻击者已登录的其他网站时就会引发CSRF 攻击。 为了实现CSRF 保护,Flask-WTF 需要程序设置一个密钥。Flask-WTF 使用这 阅读全文
posted @ 2018-01-29 15:39 木易森林 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 表单字段是可调用的,在模板中调用后会渲染成HTML。假设视图函数把一个NameForm 实例通过参数form 传入模板,在模板中可以生成一个简单的表单,如下所示: 当然,这个表单还很简陋。要想改进表单的外观,可以把参数传入渲染字段的函数,传入的参数会被转换成字段的HTML 属性。例如,可以为字段指定 阅读全文
posted @ 2018-01-29 14:55 木易森林 阅读(3404) 评论(0) 推荐(0) 编辑
摘要: Flask请求对象包含客户端发出的所有请求信息。其中,request.form 能获取POST 请求中提交的表单数据。尽管Flask 的请求对象提供的信息足够用于处理Web 表单,但有些任务很单调,而且要重复操作。比如,生成表单的HTML 代码和验证提交的表单数据。Flask-WTF(http:// 阅读全文
posted @ 2018-01-29 14:17 木易森林 阅读(6472) 评论(0) 推荐(0) 编辑
摘要: Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化、日期解析等功能。它支持在浏览器和NodeJS两种环境中运行。此类库能够 将给定的任意日期转换成多种不同的格式,具有强大的日期计算功能,同时也内置了能显示多样的日期形式的函数。Flask-Moment是一个集 阅读全文
posted @ 2018-01-29 10:36 木易森林 阅读(657) 评论(0) 推荐(0) 编辑
摘要: Web 程序不是仅由Python 代码和模板组成。大多数程序还会使用静态文件,例如HTML代码中引用的图片、JavaScript 源码文件和CSS。 在前面的章节中,我们曾检查hello.py 程序的URL 映射时,其中有一个static 路由。这是因为对静态文件的引用被当成一个特殊的路由,即/st 阅读全文
posted @ 2018-01-29 10:05 木易森林 阅读(1083) 评论(0) 推荐(0) 编辑
摘要: 在Web开发中,任何具有多个路由的程序都需要可以连接不同页面的链接,例如导航条。 在模板中直接编写简单路由的URL 链接不难,但对于包含可变部分的动态路由,在模板中构建正确的URL 就很困难。而且,直接编写URL 会对代码中定义的路由产生不必要的依赖关系。如果重新定义路由,模板中的链接可能会失效。 阅读全文
posted @ 2018-01-29 09:50 木易森林 阅读(528) 评论(0) 推荐(0) 编辑