
Python的web框架flask学习笔记
文章平均质量分 50
关于一些本人学习flask框架一些心得,不定期更新。谢谢大家的支持
自由太阳
做自己喜欢的事情,让别人去说吧!
展开
-
41、flask--Restful详解
一、介绍Restful 网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"APIFirst"的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。二、安装: Flask-Restful需要在Flask 0.8以上的版本,在Python2.6或者Python3.3上运行。通过pip inst...原创 2021-01-29 18:22:37 · 7125 阅读 · 0 评论 -
40、flask--Flask上下文
Flask上下文:1、Local对象: 在`Flask`中,类似于`request`的对象,其实是绑定到了一个`werkzeug.local.Local`对象上。这样,即使是同一个对象,那么在多个线程中都是隔离的。类似的对象还有`session`以及`g`对象。2、 Thread Local对象: 只要满足绑定到这个对象上的属性,在每个线程中都是隔离的,那么他就叫做`Thread Local`对象。示例代码:from threading import Thr...原创 2021-01-29 13:29:49 · 251 阅读 · 2 评论 -
39、flask--- cookie和session
一、什么是cookie 在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB...原创 2021-01-26 14:53:30 · 134 阅读 · 0 评论 -
38、flask--Flask文件上传
一、文件上传的基本步骤:1. 在模版中,form表单中,需要指定`encotype='multipart/form-data'`才能上传文件。2. 在后台如果想要获取上传的文件,那么应该使用`request.files.get('avatar')`来获取。3. 保存文件之前,先要使用`werkzeug.utils.secure_filename`来对上传上来的文件名进行一个过滤。这样才能保证不会有安全问题。4. 获取到上传上来的文件后,使用`avatar.save(路径)`方法来保存文件。、5原创 2021-01-26 14:31:42 · 150 阅读 · 0 评论 -
37、flask--WTForms的使用
这个库一般有两个作用。第一个就是做表单验证,把用户提交上来的数据进行验证是否合法。第二个就是做模版渲染。一、做表单验证:自定义一个表单类,继承自wtforms.Form类。 定义好需要验证的字段,字段的名字必须和模版中那些需要验证的input标签的name属性值保持一致。 在需要验证的字段上,需要指定好具体的数据类型。 在相关的字段上,指定验证器。 以后在视图中,就只需要使用这个表单类的对象,并且把需要验证的数据,也就是request.form传给这个表单类,以后调用f...原创 2021-01-25 18:19:42 · 293 阅读 · 0 评论 -
36、flask---Flask_migrate
在实际的开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会直接手动的去修改,而是去修改ORM对应的模型,然后再把模型映射到数据库中。这时候如果有一个工具能专门做这种事情,就显得非常有用了,而flask-migrate就是做这个事情的。flask-migrate是基于Alembic进行的一个封装,并集成到Flask中,而所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中。一、安装:pip install flask-migrate二、 在...原创 2021-01-25 15:40:11 · 154 阅读 · 0 评论 -
35、flask--Flask-Script使用详细
一、介绍和安装 Flask-Script的作用是可以通过命令行的形式来操作Flask。例如通过命令跑一个开发版本的服务器、设置数据库,定时任务等。要使用Flask-Script,可以通过`pip install flask-script`安装最新版本。二、基本使用步骤:第一步:创建manage.py文件第二步:在manage.py中搭建基本框架from flask_script import Managerfrom flask_learn import app...原创 2021-01-23 19:39:26 · 892 阅读 · 0 评论 -
34、flask---Flask-SQLAlchemy下alembic的配置
Flask-SQLAlchemy下alembic的配置步骤:1. 定义好自己的模型和在config中配置数据库连接DEBUG = True# 修改代码后自动重新加载TEMPLATES_AUTO_RELOAD=True# 数据库配置HOSTNAME = '127.0.0.1'PORT = 3306DATABASE = 'test_flask_learn'USERNAME = 'root'PASSWORD ='123456'#dialect+driver://userna原创 2021-01-23 10:10:59 · 358 阅读 · 0 评论 -
33、flask---alembic使用
alembic的使用一、介绍和安装 alembic是sqlalchemy作者开发的,用来做ORM模型与数据库的迁移与映射。alembic使用跟git有点类似,表现为两个方面。第一,alembic的所有命令都是以alembic开头;第二,alembic的迁移文件也是通过版本进行控制的。 打开终端: pip install alembic二、使用alembic的步骤1. 定义好自己的模型。#encoding: utf-8from sqlalchemy imp...原创 2021-01-22 21:51:58 · 604 阅读 · 0 评论 -
31、flask--数据库的基本操作(下)
3、懒加载:在一对多,或者多对多的时候,如果想要获取多的这一部分的数据的时候,往往能通过一个属性就可以全部获取了。比如有一个作者,想要或者这个作者的所有文章,那么可以通过user.articles就可以获取所有的。但有时候我们不想获取所有的数据,比如只想获取这个作者今天发表的文章,那么这时候我们可以给relationship传递一个lazy='dynamic',以后通过user.articles获取到的就不是一个列表,而是一个AppenderQuery对象了。这样就可以对这个对象再进行一层过滤和排序等操原创 2021-01-22 19:31:49 · 291 阅读 · 0 评论 -
30、flask--数据库的基本操作(上)
1、 排序:1. order_by:可以指定根据这个表中的某个字段进行排序,如果在前面加了一个-,代表的是降序排序。2. 在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排序的方式,可以在定义模型的时候就指定排序的方式。有以下两种方式: * relationship的order_by参数:在指定relationship的时候,传递order_by参数来指定排序的字段。 * 在模型定义中,添加以下代码: __mapper_args__ = {...原创 2021-01-22 16:55:36 · 224 阅读 · 0 评论 -
29、flask---外键和ORM关系
### 外键:使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和父表的主键字段类型保持一致。示例代码如下:```pythonclass User(Base): __tablename__ = 'user' id = Column(Integer,primary_key=True,autoincrement=True) username = Column(String(50),nullable=...原创 2021-01-20 20:31:42 · 693 阅读 · 0 评论 -
28、flask--filter过滤条件
### filter过滤条件:过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过filter方法实现的:1. equals: ```python article = session.query(Article).filter(Article.title == "title0").first() print(article) ```2. not equals: ```python query.filter(Us...原创 2021-01-17 10:57:04 · 1975 阅读 · 1 评论 -
27、flask--query可用参数
### query可用参数:1. 模型对象。指定查找这个模型中所有的对象。2. 模型中的属性。可以指定只查找某个模型的其中几个属性。3. 聚合函数。 * func.count:统计行的数量。 * func.avg:求平均值。 * func.max:求最大值。 * func.min:求最小值。 * func.sum:求和。 `func`上,其实没有任何聚合函数。但是因为他底层做了一些魔术,只要mysql中有的聚合函数,都可以通过func调用。...原创 2021-01-16 21:03:32 · 1175 阅读 · 1 评论 -
26、flask--- Column常用参数
Column常用参数:1. primary_key:设置某个字段为主键。2. autoincrement:设置这个字段为自动增长的。3. default:设置某个字段的默认值。在发表时间这些字段上面经常用。4. nullable:指定某个字段是否为空。默认值是True,就是可以为空。5. unique:指定某个字段的值是否唯一。默认是False。6. onupdate:在数据更新的时候会调用这个参数指定的值或者函数。在第一次插入这条数据的时候,不会用onupdate的值,只会使用defaul.原创 2021-01-16 20:45:37 · 906 阅读 · 0 评论 -
24、flask---对数据的增删改查
一、 用session做数据的增删改查操作:1. 构建session对象:所有和数据库的ORM操作都必须通过一个叫做`session`的会话对象来实现,通过以下代码来获取会话对象:#encoding: utf-8from sqlalchemy import create_engine,Column,Integer,Stringfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import s原创 2021-01-16 11:17:24 · 985 阅读 · 0 评论 -
23、flask--ORM简单使用
1、ORM介绍:1. ORM:Object Relationship Mapping 2. 大白话:对象模型与数据库表的映射2、将ORM模型映射到数据库中:1. 用`declarative_base`根据`engine`创建一个ORM基类。 ```python from sqlalchemy.ext.declarative import declarative_base engine = create_engine(DB_URI) Base = declar...原创 2021-01-16 10:59:47 · 477 阅读 · 0 评论 -
22、flask--SQLAlchemy连接数据库
1、使用SQLAlchemy去连接数据库:1.1SQLAlchemy使用SQLALchemy去连接数据库,需要使用一些配置信息,然后将他们组合成满足条件的字符串:```pythonHOSTNAME = '127.0.0.1'PORT = '3306'DATABASE = 'first_sqlalchemy'USERNAME = 'root'PASSWORD = 'root'# dialect+driver://username:password@host:port/databaseD原创 2021-01-15 21:06:55 · 481 阅读 · 0 评论 -
21、flask---蓝图应用
试试撒原创 2021-01-15 19:40:15 · 235 阅读 · 0 评论 -
20、flask---视图高级应用
1、`add_url_rule(rule,endpoint=None,view_func=None)` 这个方法用来添加url与视图函数的映射。如果没有填写`endpoint`,那么默认会使用`view_func`的名字作为`endpoint`。以后在使用`url_for`的时候,就要看在映射的时候有没有传递`endpoint`参数,如果传递了,那么就应该使用`endpoint`指定的字符串,如果没有传递,那么就应该使用`view_func`的名字。2、`app.route(rule,*...原创 2021-01-14 17:45:49 · 229 阅读 · 0 评论 -
19、flask---豆瓣微信小程序界面案例
要实现效果如图所示:原创 2021-01-14 15:06:43 · 192 阅读 · 0 评论 -
18、flask---静态文件
加载静态文件使用的是`url_for`函数。然后第一个参数需要为`static`,第二个参数需要为一个关键字参数`filename='路径'`。示例:{{ url_for("static",filename='xxx') }}路径查找,要以当前项目的`static`目录作为根目录。...原创 2021-01-13 17:13:37 · 175 阅读 · 0 评论 -
17、flask---set和with语句
一、set语句:在模版中,可以使用`set`语句来定义变量。示例如下:{% set username='bj' %}<p>用户名:{{ username }}</p>一旦定义了这个变量,那么在后面的代码中,都可以使用这个变量,就类似于Python的变量定义是一样的。二、with语句:`with`语句定义的变量,只能在`with`语句块中使用,超过了这个代码块,就不能再使用了。示例代码如下:{% with classroom = '01班' %}&l原创 2021-01-13 16:55:54 · 326 阅读 · 0 评论 -
16.flask--include
include标签:1. 这个标签相当于是直接将指定的模版中的代码复制粘贴到当前位置。 2. `include`标签,如果想要使用父模版中的变量,直接用就可以了,不需要使用`with context`。 3. `include`的路径,也是跟`import`一样,直接从`templates`根目录下去找,不要以相对路径去找项目的目录结构:<!DOCTYPE html><html lang="en"><head> <meta cha..原创 2021-01-13 16:46:58 · 102 阅读 · 0 评论 -
16、flask--宏
模板中的宏跟python中的函数类似,可以传递参数,但是不能有返回值,可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量。使用宏的时候,参数可以为默认值。相关示例代码如下:1. 定义宏: {% macro input(name, value='', type='text') %} <input type="{{ type }}" name="{{ name }}" value="{{ value }}"> {% endmacro %}...原创 2021-01-13 16:38:12 · 119 阅读 · 0 评论 -
15、flask--for循环
在`jinja2`中的`for`循环,跟`python`中的`for`循环基本上是一模一样的。也是`for...in...`的形式。并且也可以遍历所有的序列以及迭代器。但是唯一不同的是,`jinja2`中的`for`循环没有`break`和`continue`语句。 在‘Jinja’中的‘for’循环还包含以下变量,可以用来获取当前的遍历状态:loop.index :当前迭代的索引(从1开始) loop.index0 :当前迭代的索引(从0开始) loop.first...原创 2021-01-13 14:22:53 · 2158 阅读 · 0 评论 -
14、flask---条件判断
`if`条件判断语句必须放在`{% if statement %}`中间,并且还必须有结束的标签`{% endif %}`。和`python`中的类似,可以使用`>,<,<=,>=,==,!=`来进行判断,也可以通过`and,or,not,()`来进行逻辑合并操作。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <ti...原创 2021-01-13 13:43:13 · 875 阅读 · 0 评论 -
13、flask--自定义时间处理过滤器案例
前端代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自由太阳</title></head><body> <p>时间:{{ create_time|handle_time }}</p></body></html>后端代码如下:原创 2021-01-13 13:33:40 · 529 阅读 · 0 评论 -
12、flask--过滤器
一、过滤器 过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。使用方式:过滤器的使用方式为:变量名 | 过滤器。{{variable | filter_name(*args)}}如果没有任何参数传给过滤器,则可以把括号省略掉, flask中过滤器支持链式调用{{variable | filter_name}}Notes:链式调用原理...原创 2021-01-12 18:12:02 · 205 阅读 · 0 评论 -
11、flask---url_for使用
`url_for`的基本使用: `url_for`第一个参数,应该是视图函数的名字的字符串。后面的参数就是传递给`url`。如果传递的参数之前在`url`中已经定义了,那么这个参数就会被当成`path`的形式给`url`。如果这个参数之前没有在`url`中定义,那么将变成查询字符串的形式放到`url`中。@app.route('/post/list/<page>/')def my_list(page): return 'my list'print(url_fo...原创 2021-01-12 11:29:02 · 784 阅读 · 0 评论 -
10、flask---模板参数及其技巧
1、静态页面模板放在templates文件夹中2、需要导入render_templatefrom flask import Flask,render_template3、视图函数中使用render_template函数渲染模板第一种形式:参数比较少的时候使用return render_template('index.html',name="bj",age=18)第二种形式:参数比较多的时候使用return render_template('index.html', **context.原创 2021-01-10 16:30:19 · 466 阅读 · 0 评论 -
09、flask----Jinja2模版介绍
Jinja2模版介绍在渲染模版的时候,默认会从项目根目录下的`templates`目录下查找模版。 如果不想把模版文件放在`templates`目录下,那么可以在`Flask`初始化的时候指定`template_folder`来指定模版的路径。from flask import Flask,render_templateapp = Flask(__name__,template_folder='C:/templates')#DTL:Django Tmplate Languate@...原创 2021-01-10 16:07:48 · 117 阅读 · 0 评论 -
07、flask--URL重定向
1、重定向笔记:重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。永久性重定向:`http`的状态码是`301`,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入`www.jingdong.com`的时候,会被重定向到`www.jd.com`,因为`jingdong.com`这个网址已经被废弃了,被改成`jd.com`,所原创 2021-01-10 14:59:49 · 307 阅读 · 0 评论 -
06、flask---自定义URL
一、正则表达式中常见的基本符号1.点号“.” 一个点号可以代替除了换行符(\n)以外的任何一个字符,包括但不限于英文字母、数字、汉字、英文标点符号和中文标点符号。2.星号“*” 一个星号可以表示它前面的一个子表达式(普通字符、另一个或几个正则表达式符号)0次到无限次。3.问号“?” 问号表示它前面的子表达式0次或者1次。注意,这里的问号是英文问号。4.反斜杠“\” 反斜杠在正则表达式里面不能单独使用,甚至在整个Python里都不能单独使用。反斜杠需要和...原创 2021-01-10 14:22:45 · 958 阅读 · 0 评论 -
5、flask--URL01
URL与视图函数的映射:一、传递参数:传递参数的语法是:`/<参数名>/`。然后在视图函数中,也要定义同名的参数。二、参数的数据类型:1. 如果没有指定具体的数据类型,那么默认就是使用`string`数据类型。2. `int`数据类型只能传递`int`类型。@app.route('/p/<int:article_id>')def article_detail(article_id): return '您请求的文章是:%s' % article_id原创 2021-01-09 18:19:04 · 152 阅读 · 0 评论 -
config配置文件
config笔记:config配置的两种方式:一、使用`app.config.from_object`的方式加载配置文件:1. 导入`import config`。2. 使用`app.config.from_object(config)`。二、使用`app.config.from_pyfile`的方式加载配置文件:这种方式不需要`import`,直接使用`app.config.from_pyfile('config.py')`就可以了。注意这个地方,必须要写文件的全名,后缀名.原创 2021-01-09 18:05:45 · 4169 阅读 · 0 评论 -
4、第一个FLask项目
1、创建第一个flask项目:2、项目目录文件解说static:静态文件templates:模板文件flask_learn.py:主app文件,项目从这个文件进行运行是核心文件。3、第一个程序讲解from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'if __name__ == '__main__': .原创 2021-01-09 17:24:58 · 351 阅读 · 2 评论 -
3. web服务器和应用服务器以及web应用框架
web服务器和应用服务器以及web应用框架:web服务器:负责处理http请求,响应静态文件,常见的有Apache,Nginx以及微软的IIS.应用服务器:负责处理逻辑的服务器。比如php、python的代码,是不能直接通过nginx这种web服务器来处理的,只能通过应用服务器来处理,常见的应用服务器有uwsgi、tomcat等。web应用框架:一般使用某种语言,封装了常用的web功能的框架就是web应用框架,flask、Django以及Java中的SSH(Structs2+Sprin..原创 2021-01-09 16:55:49 · 146 阅读 · 0 评论 -
2.Flask---url介绍
url详解:URL是Uniform Resource Locator的简写,统一资源定位符。一个URL由以下几部分组成:scheme://host:port/path/?query-string=xxx#anchor* scheme:代表的是访问的协议,一般为http或者https以及ftp等。* host:主机名,域名,比如www.baidu.com。* port:端口号。当你访问一个网站的时候,浏览器默认使用80端口。我们使用的flask默认端口号为5000* path:查找路径。比.原创 2021-01-09 16:50:49 · 354 阅读 · 0 评论 -
1.Flask框架--准备阶段
Flask准备:1、Python版本:Python3.62、 Pycharm软件:官网地址:https://www.jetbrains.com/pycharm/download/#section=windows3、 安装虚拟环境:1. 安装virtualenv:2. 安装virtualenvwrapper:4、安装flask:pip install flask...原创 2021-01-09 16:35:26 · 117 阅读 · 0 评论