Python的flask相关知识点有哪些

69次阅读
没有评论

共计 3506 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章主要讲解了“Python 的 flask 相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Python 的 flask 相关知识点有哪些”吧!

一、flask

a、Flask 是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求并对请求进行预处理,然后触发 Flask 框架,开发人员基于 Flask 框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助 jinja2 模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器

b、“微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。

c、默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用。

d、视频讲解

二、安装

 a、安装:pip3 install flask

视频讲解

三、虚拟环境

 a、安装: pip3 install virtualenv
 b、#  创建虚拟环境  virtualenv env1
 c、#  进入虚拟环境  Scripts/activate
 d、 #  退出虚拟环境  Scripts/deactivate

四、flask 框架

 a、简介:轻量级框架
 Django:无 socket、中间件、路由系统、视图(CBV,FBV)、  模板、ORM、cookie、Session、Admin、Form、缓存、信号、序列化....
 Flask:无 socket、中间件(扩展)、路由系统、视图(CBV)、第三方模板(jinja2)、cookie、Session 弱爆了
 b、  什么是 wsgi? Web 服务网管接口,协议。 c、Flask 依赖一个实现了 WSGI 协议的模块:werkzeug

五、flask

 a、 - 依赖于 wsgi 模块:wsgiref,werkzeug,wsgi
 b、 - 实例化 Flask 对象
 - 静态文件前缀  /xxx
 - 静态文件目录
 - 模板路径
 c、  添加路由关系  
 - 将  Rule(url 和视图函数) 添加到 Flask 对象的 url_map 字段中
 - 两种添加路由的方式
 d、request
 -request.form
 -request.args

六、基本使用

from flask import Flask
#  实例化 Flask 对象
app = Flask(__name__)
#  生成路由关系,并把关系保存到某个地方,app 对象的  url_map 字段中
@app.route(/xxxx) # @decorator
def index():
 return  Index 
# def index():
# return  Index 
# app.add_url_rule(/xxx ,  n1 , index)
if __name__ ==  __main__ :
 #  启动程序,监听用户请求
 #  一旦请求到来,执行  app.__call__方法
 #  封装用户请求
 #  进行路由匹配
 app.run()

a、保存 session 的数据存到了浏览器上,– 优点:减轻了服务端的压力 – 缺点:不安全

b、路由系统:

@app.route(/post/path:path) @app.route(/login , methods=[ GET , POST]) @app.route(/user/ username) @app.route(/post/int:post_id) @app.route(/post/float:post_id)

七、路由系统 a、- 可传入参数

 @app.route(/user/ username)
 @qpp.route(/post/ int:post_id ,methods=[ GET , POST],endpoint= fff )

b、反向生成 URL:url_for

c、扩展 Flask 的路由系统,让它支持正则:

from flask import Flask,url_for
 app = Flask(__name__)
 #  定义转换的类
 from werkzeug.routing import BaseConverter
 class RegexConverter(BaseConverter):
  
  自定义 URL 匹配正则表达式
  
 def __init__(self, map, regex):
 super(RegexConverter, self).__init__(map)
 self.regex = regex
 def to_python(self, value):
  
  路由匹配时,匹配成功后传递给视图函数中参数的值
 :param value: 
 :return: 
  
 return int(value)
 def to_url(self, value):
  
  使用 url_for 反向生成 URL 时,传递的参数经过该方法处理,返回的值用于生成 URL 中的参数
 :param value: 
 :return: 
  
 val = super(RegexConverter, self).to_url(value)
 return val
 #  添加到 converts 中
 app.url_map.converters[xxx] = RegexConverter
 #  进行使用
 @app.route(/index/ xxx( \d+):nid ,endpoint= xx )
 def index(nid):
 url_for(xx ,nid=123)
 return  Index 
 if __name__ ==  __main__ :
 app.run()

八、请求响应

from flask import Flask
 from flask import request
 from flask import render_template
 from flask import redirect
 from flask import make_response
 app = Flask(__name__)

 @app.route(/login.html , methods=[ GET ,  POST])
 def login():
 #  请求相关信息
 # request.method
 # request.args
 # request.form
 # request.values
 # request.cookies
 # request.headers
 # request.path
 # request.full_path
 # request.script_root
 # request.url
 # request.base_url
 # request.url_root
 # request.host_url
 # request.host
 # request.files
 # obj = request.files[the_file_name]
 # obj.save(/var/www/uploads/  + secure_filename(f.filename))
 #  响应相关信息
 # return  字符串
 # return render_template(html 模板路径 ,**{})
 # return redirect(/index.html)
 # response = make_response(render_template( index.html))
 # response 是 flask.wrappers.Response 类型
 # response.delete_cookie(key)
 # response.set_cookie(key ,  value)
 # response.headers[X-Something] =  A value
 # return response

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3506字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)