Flask框架(1)——基本使用
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
whyfail
编程界崇尚以简洁优雅为美,很多时候,如果你觉得一个概念很复杂,那么很可能是你理解错了!
展开
-
Flask之文件操作
文件上传在模版html中,表单需要指定encotype='multipart/form-data'(相当于文件的格式类型)才能上传文件。在后台如果想要获取上传的文件,那么应该使用request.files.get('文件名')来获取。保存文件之前,先要使用werkzeug.utils.secure_filename来对上传上来的文件名进行一个过滤。能保证不会有安全问题。获取到上传上来的文...原创 2020-01-15 12:08:45 · 830 阅读 · 0 评论 -
Flask之WTForms常用验证器
WTForms常用验证器页面把数据提交上来,需要经过表单验证,进而需要借助验证器来进行验证常用的内置验证器:Length:字符串长度限制,有min和max两个值进行限制。EqualTo:验证数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。Email:验证上传的数据是否为邮箱数据格式 如:python123.@163.com。InputRequired:验证该项...原创 2020-01-14 21:05:45 · 1026 阅读 · 0 评论 -
Flack之 WTForms
WTForms插件这个插件库主要有两个作用。第一个是做表单验证,将用户提交上来的数据进行验证是否符合系统要求。第二个是做模版渲染。 (了解即可)Flask-WTFFlask-WTF是简化了WTForms操作的一个第三方库。WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板。而Flask-WTF还包括一些其他的功能:CSRF保护,文件上传等。安装Flask...原创 2020-01-14 16:46:49 · 391 阅读 · 0 评论 -
Flask之信号
信号机制类似于两方属于敌对关系时,某人在敌对方阵营进行交谈,一旦遇到特殊情况,某人便会发送信号,他的同伙接收(监听)到他发的信号后,同伙便会做出一系列的应对策略(杀进去|撤退)。flask中的信号使用的是一个第三方插件,叫blinker。通过pip list看一下,如果没有安装,通过以下命令即可安装blinker: pip install blinker自定义信号步骤1. 创建信号:定...原创 2020-01-14 12:52:07 · 446 阅读 · 0 评论 -
Flask之钩子函数
钩子函数在Flask中钩子函数是使用特定的装饰器装饰的函数。为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码。那么这种函数就叫做钩子函数。常见的钩子函数1、before_first_request处理项目的第一次请求之前执行。@app.before_first_requestdef first_request(): print 'first...原创 2020-01-14 11:48:57 · 1515 阅读 · 0 评论 -
Flask之g对象
保存为全局对象g对象的好处g对象是在整个Flask应用运行期间都是可以使用的。并且也跟request一样,是线程隔离的。这个对象是专门用来存储开发者自己定义的一些数据,方便在整个Flask程序中都可以使用。一般使用就是,将一些经常会用到的数据绑定到上面,以后就直接从g上面取就可以了,而不需要通过传参的形式,这样更加方便。g对象使用场景有一个工具类utils.py 和用户办理业务...原创 2020-01-14 10:27:54 · 583 阅读 · 0 评论 -
Flask之请求上下文
Flask_request请求上下文:请求上下文也是存放到一个LocalStack的栈中。和请求相关的操作就必须用到请求上下文,比如使用url_for反转视图函数。视图函数中在视图函数中,不用担心请求上下文的问题。因为视图函数要执行,那么肯定是通过访问url的方式执行的,那么这种情况下,Flask底层就已经自动的帮我们把应用上下文和请求上下文都推入到了相应的栈中。视图函数外如...原创 2020-01-13 22:23:58 · 281 阅读 · 0 评论 -
Flask之应用上下文
Flask_app上下文app上下文,也叫应用上下文。应用上下文应用上下文是存放到一个LocalStack的栈中。和应用app相关的操作就必须要用到应用上下文,比如通过current_app获取当前的这个app名字。视图函数中在视图函数中,不用担心应用上下文的问题。因为视图函数要执行,那么肯定是通过访问url的方式执行的,那么这种情况下,Flask底层就已经自动的把应用上下文都推...原创 2020-01-13 22:04:59 · 495 阅读 · 0 评论 -
Flask之ThreadLocal
Local对象隔离线程间的对象_即ThreadLocal变量Local对象在Flask中,类似于request对象,其实是绑定到了一个werkzeug.local.Local对象上。这样,即使是同一个对象,那么在多个线程中都是隔离的。类似的对象还有session以及g对象。flask=werkzeug + sqlalchemy + jinja2ThreadLocal变量Python...原创 2020-01-13 21:39:49 · 749 阅读 · 0 评论 -
Flask之Session
session基本概念session技术也叫会话技术。session和cookie的作用有点类似,都是为了存储用户相关的信息,都是为了解决http协议无状态的这个特点。不同的是,cookie信息是存储在客户端,而session信息是存储在服务器端。需要注意的是,不同的语言,不同的框架,有不同的实现。虽然底层的实现不完全一样,但目的都是让服务器端能方便的存储数据而产生的。session的...原创 2020-01-13 20:51:56 · 466 阅读 · 0 评论 -
Flask之Cookie
cookie的基本概念在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据cookie给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前...原创 2020-01-13 20:12:59 · 214 阅读 · 0 评论 -
Flask之蓝图
蓝图蓝图的作用就是让Flask项目更加模块化,结构更加清晰,为了更好的管理项目让项目达到分层解耦而产生的。可以将相同模块的视图函数放在同一个蓝图下,同一个文件中,方便管理。蓝图基本语法#在蓝图文件中导入Blueprint:from flask import Blueprintuser_bp = Blueprint('user',__name__)#在主启动文件中注册蓝图:...原创 2020-01-13 18:40:14 · 410 阅读 · 0 评论 -
Flask之基于方法的类视图
基于调度方法的类视图基于方法的类视图,是根据请求的method来执行不同的方法的。如果用户是发送的get请求,那么将会执行这个类的get方法。如果用户发送的是post请求,那么将会执行这个类的post方法。其他的method类似,比如delete、put。这种方式,可以让代码更加简洁。所有和get请求相关的代码都放在get方法中,所有和post请求相关的代码都放在post方法中。就不需...原创 2020-01-13 18:02:15 · 644 阅读 · 0 评论 -
Flask之类视图
类视图之前视图都是函数,所以一般简称视图函数。其实视图也可以基于类来实现,类视图的好处是支持继承,但是类视图不能跟函数视图一样,写完类视图还需要通过app.add_url_rule(url_rule,view_func)来进行注册。标准类视图使用步骤标准类视图,必须继承自flask.views.View.必须实现dipatch_request方法,以后请求过来后,都会执行这个方法。这...原创 2020-01-13 13:53:32 · 501 阅读 · 1 评论 -
Flask之set和with
set和with语句set语句在模版中,可以使用set语句来定义变量。<!--set语句来定义变量,之后,那么在后面的代码中,都可以使用这个变量-->{% set uname='wukong'%}<p>用户名:{{ uname }}</p>使用set定义之后的变量,与python中的定义的全局变量类似。with语句with语句定义的变量,...原创 2020-01-13 13:08:29 · 616 阅读 · 0 评论 -
Flask之静态文件
静态文件静态文件指的是:css文件、js文件 、图片文件等文件。加载静态文件加载静态文件使用的是url_for函数。然后第一个参数需要为static,第二个参数需要为一个关键字参数filename='路径'。语法: {{ url_for("static",filename='xxx') }} 路径查找,要以当前项目的static目录作为根目录。...原创 2020-01-13 13:12:55 · 180 阅读 · 0 评论 -
Flask之模版继承
模版继承模版继承的作用:模版继承可以把一些公用的代码单独抽取出来放到一个父模板中。以后子模板直接继承就可以使用了。这样可以重复的利用代码,并且以后修改起来也比较方便。模版继承语法:使用extends语句,来指明继承的父模板。父模板的路径,也是相对于templates文件夹下的绝对路径。{% extends "base.html" %}block语法:一般在父模版中,定义一些公共...原创 2020-01-13 13:22:23 · 189 阅读 · 0 评论 -
Flask之include
include标签使用这个标签相当于是直接将指定的模版中的代码复制粘贴到当前位置。include标签,如果想要使用父模版中的变量,直接用就可以了,不需要使用with context。include的路径,也是跟import一样,直接从templates根目录下去找,不要以相对路径去找。<body> <!--通过include 引入头部log信息--> ...原创 2020-01-13 13:02:51 · 392 阅读 · 0 评论 -
Flask之宏
宏的概念以及基本使用宏: 模板中的宏与python中的函数类似,可以传递参数,但是不能有返回值,可以将一些经常用的代码片段放到宏中,然后把一些不固定的值抽取出来当作一个变量。定义宏{% macro input(name,value='',type='text') %} <input type="{{ type }}" name="{{ name }}" value="{{ va...原创 2020-01-13 12:51:39 · 266 阅读 · 0 评论 -
Flask之Jinja2循环语句
控制语句所有的控制语句都是放在{% ... %}中,并且右一个语句{% endxxx %}来进行结束。Jinja2中常用的控制语句右if/for..in..ifif语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作。{% if uname == 'wukong' %} <p...原创 2020-01-13 12:25:15 · 766 阅读 · 1 评论 -
Falsk之Jinja2过滤器
Jinja2过滤器有时候需要在模版中对一些变量进行处理,那么就必须需要类似于Python中的函数一样,可以将这个值传到函数中,然后做一些操作。在模版中,过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。基本语法:{{ variable|过滤器名字 }}。使用管道符号|进行组合。过滤器介绍过滤器是通过管道符号...原创 2020-01-08 00:29:36 · 349 阅读 · 0 评论 -
Flask之jinja2简介
Jinja2模板介绍模板是一个 web 开发必备的模块。因为在渲染一个网页的时候,并不是只渲染一个纯文本字符串,而是需要渲染一个有富文本标签的页面。这时候就需要使用模板了。在 Flask 中,配套的模板是 Jinja2Jinja2 的作者也是 Flask 的作者。Jinja2模板非常的强大,并且执行效率高。查找路径在渲染模版的时候,默认会从项目根目录下的templates目录...原创 2020-01-07 22:35:23 · 615 阅读 · 0 评论 -
Flask之网页请求
url_forurl_for() :函数接收两个及以上的参数,接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到 URL 的后面作为查询参数。@app.route('/post/list/<page>/')def my_list(page): return 'my list'@app.route('/')def hello...原创 2020-01-07 17:38:48 · 506 阅读 · 0 评论 -
Flask之URL映射
URL与函数的映射@app.route('/article/<id>/')def article_detail(id): return '您请求的文章是:%s'% id其中 <id> ,尖括号是固定写法,语法为 <variable> ,variable 默认的数据类型是字符串。如果需要指定类型,则要写成 <converter:va...原创 2020-01-07 16:59:13 · 698 阅读 · 0 评论 -
Flask之简介
Flask简介Flask是Python的一个WEB框架此外,还有Django、tornado、cherryPy、WEB2PY。flask 是一款非常流行的 Python Web 框架,出生于2010年,作者是 Armin Ronacher。Flask的优点1.微框架、简洁、只做他需要做的,给开发者提供了很大的扩展性。2.Flask和相应的插件写得很好,用起来很爽。3.开发效率非常...原创 2020-01-06 23:26:41 · 234 阅读 · 0 评论