随笔分类 - flask
摘要:项目部署 基于ubuntu 16.04系统,使用 Gunicorn + Nginx 进行布署,云服务器为阿里云 学习目标 能够理解 Nginx 服务器的作用 能够使用 Gunicorn + Nginx 实现简单的 helloworld 程序部署 阿里云服务器 选择云服务器:阿里云服务器 https:
阅读全文
摘要:在引入蓝图概念之前,先分析app注册路由的原理 app注册路由的基本原理 ## demo.py from flask import Flask app = Flask(__name__) @app.route("/") # 调用app.route方法 def index(): return 'pas
阅读全文
摘要:信号机制 Flask信号机制 Flask信号(signals, or event hooking)允许特定的发送端通知订阅者发生了什么(既然知道发生了什么,那我们可以根据自己业务需求实现自己的逻辑)。 Flask提供了一些信号(核心信号)且其它的扩展提供更多的信号。 信号依赖于Blinker库。 p
阅读全文
摘要:在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。 在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Scr
阅读全文
摘要:常见关系模板代码 以下罗列了使用关系型数据库中常见关系定义模板代码 一对多 示例场景: 用户与其发布的帖子(用户表与帖子表) 角色与所属于该角色的用户(角色表与多用户表) 示例代码 class Role(db.Model): """角色表""" __tablename__ = 'roles' id
阅读全文
摘要:flask系列(1-1)-Flask简介 flask系列(1-2)-虚拟环境 flask系列(1-4)-相关配置参数
阅读全文
摘要:后台 from flask import Flask, render_template, request, flash, redirect, url_for from flask_sqlalchemy import SQLAlchemy from flask_wtf import FlaskForm
阅读全文
摘要:数据库基本操作 在Flask-SQLAlchemy中,插入、修改、删除操作,均由数据库会话管理。 会话用 db.session 表示。在准备把数据写入数据库前,要先将数据添加到会话中然后调用 commit() 方法提交会话。 在 Flask-SQLAlchemy 中,查询操作是通过 query 对象
阅读全文
摘要:Flask-SQLAlchemy安装及设置 SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升 SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层
阅读全文
摘要:ORM ORM 全拼Object-Relation Mapping. 中文意为 对象-关系映射. 主要实现模型对象到关系数据库数据的映射. 比如:把数据库表中每条记录映射为一个模型对象 ORM图解 优点 : 只需要面向对象编程, 不需要面向数据库编写代码. 对数据库的操作都转化成对类属性和方法的操作
阅读全文
摘要:CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。 CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账...... 造成的问题:个人隐私泄露以及财产安全。 CSRF攻击示意
阅读全文
摘要:Web表单 Web 表单是 Web 应用程序的基本功能。 它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。 在Flask中,为了处理web表单,我们可以使用 Flask-WTF
阅读全文
摘要:模板中特有的变量和函数 你可以在自己的模板中访问一些 Flask 默认内置的函数和对象 config 你可以从模板中直接访问Flask当前的config对象: {{config.SQLALCHEMY_DATABASE_URI}} sqlite:///database.db request 就是fla
阅读全文
摘要:包含 Jinja2模板中,除了宏和继承,还支持一种代码重用的功能,叫包含(Include)。它的功能是将另一个模板整个加载到当前模板中,并直接渲染。 include的使用 {% include 'hello.html' %} 包含在使用时,如果包含的模板文件不存在时,程序会抛出TemplateNot
阅读全文
摘要:模板继承 模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。 标签定义的内容 {% block top %} {% endblock %} 相当于在父模板中挖个坑,当子模板继承父模板时,可以进行填充
阅读全文
摘要:模板代码复用 在模板中,可能会遇到以下情况: 多个模板具有完全相同的顶部和底部内容 多个模板中具有相同的模板代码内容,但是内容中部分值不一样 多个模板中具有完全相同的 html 代码块内容 像遇到这种情况,可以使用 JinJa2 模板中的 宏、继承、包含来进行实现 宏 对宏(macro)的理解: 把
阅读全文
摘要:控制代码块 控制代码块主要包含两个: - if/else if /else / endif - for / endfor if语句 Jinja2 语法中的if语句跟 Python 中的 if 语句相似,后面的布尔值或返回布尔值的表达式将决定代码中的哪个流程会被执行: {%if user.is_log
阅读全文
摘要:自定义过滤器 过滤器的本质是函数。当模板内置的过滤器不能满足需求,可以自定义过滤器。自定义过滤器有两种实现方式: 一种是通过Flask应用对象的 add_template_filter 方法 通过装饰器来实现自定义过滤器 重要:自定义的过滤器名称如果和内置的过滤器重名,会覆盖内置的过滤器。 需求:添
阅读全文
摘要:过滤器 过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。 使用方式: 过滤器的使用方式为:变量名 | 过滤器。 {{variable | filter_name(*
阅读全文
摘要:模板的使用 在项目下创建 templates 文件夹,用于存放所有的模板文件,并在目录下创建一个模板html文件 temp_demo1.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</
阅读全文