django渲染模板与vue的语法冲突解决Flask框架默认WSGI:Werkzeug
django渲染模板与vue的语法冲突解决
Flask框架默认WSGI:Werkzeug
Python来说,它有很多web框架,常见的有jango、Flask、Tornado 、sanic等,比如Odoo、Superset都基于Flask框架进行开发的开源平台,具有强大的功能。在Linux下,默认使用的WSGI Server一般为Gunicorn, 它是一个比较出名的 Web 服务器。在常规的 Django 和 Flask 应用部署中,都有大量的站点使用 Gunicorn。但它只支持Linux,不支持Windows,但有没有类似Gunicorn的产品,但同时支持跨平台?答案是肯定的,那就是Waitress。一个Web框架如何被客户端访问,如下图:
引入vue.js文件 https://v2.cn.vuejs.org/v2/guide/
然后绑定DOM
更多操作看文档,三天就可以灵活运用了
学习技术一定要看官方文档!!!
Vue与Django的渲染语法冲突问题
两种方法,一更换vue的括号,二用django模板语法
new Vue({
delimiters: ["{[", "]}"] // 可自定义符号
})
{% verbatim %}
<div>{{ text }}</div>
{% endverbatim %}
确保不会被django渲染
WSGI(Web服务器网关接口 Web Server Gateway Interface )Web应用程序和Web服务器之间的通用接口标准、Flask框架默认WSGI:Werkzeug
WSGI
WSGI(Web Server Gateway Interface)是一种Python Web应用程序和Web服务器之间的通用接口标准。它定义了Web服务器如何与Python应用程序进行通信,以便能够处理HTTP请求和响应。
作用
WSGI的设计目标是将Web服务器与应用程序解耦,使得开发人员可以使用不同的Web服务器和框架来开发和部署Python Web应用程序。通过遵循WSGI标准,开发人员可以编写可移植的Web应用程序,无需关心底层的Web服务器实现细节。
例如,今天您决定使用 Gunicorn 部署应用程序,但几年后您决定从 Gunicorn 切换到 mod_wsgi。现在,在这种情况下,您可以轻松切换到 mod_wsgi,而无需对实现 WSGI 的应用程序或框架进行任何更改。因此,WSGI 为您的应用程序提供了灵活性。
使用 WSGI 的另一个原因是它的可扩展性。一旦您的应用程序上线、启动并运行,您的应用程序中可能会出现数千个请求。因此,WSGI 能够一次处理数千个请求。众所周知,WSGI 服务器负责处理来自 Web 服务器的请求,并决定将这些请求与应用程序框架的进程进行通信。在这里,我们可以在服务器之间划分职责以扩展网络流量。
参考文章:什么是 WSGI(Web 服务器网关接口)?
工作原理
WSGI的工作原理是,Web服务器接收到HTTP请求后,将请求信息封装成一个字典对象,然后调用WSGI应用程序提供的一个可调用对象(通常是一个函数或类的实例),将请求信息作为参数传递给该可调用对象。应用程序处理请求并生成响应,然后将响应信息返回给Web服务器。(另一说法是应用程序返回响应信息的时候,也要先经过WSGI处理)
https://dev.to/dev0928/how-to-deploy-python-flask-web-applications-4mh7
优点
WSGI的优点包括灵活性、可移植性和可扩展性。它可以与各种Web服务器和框架配合使用,如Apache、Nginx、Gunicorn、uWSGI等,同时也可以方便地开发自定义的中间件来实现额外的功能。
Flask框架默认的WSGI:Werkzeug
Flask是一个基于Python的轻量级Web框架,它使用了Werkzeug作为底层的WSGI工具库。Werkzeug是一个WSGI工具库,提供了处理HTTP请求和响应的功能,它是Flask框架的核心组件之一。
在Flask中,Werkzeug提供了处理HTTP请求和响应的功能,包括路由、请求上下文、会话管理等。Flask框架则在此基础上提供了更高级的功能,如模板引擎、表单处理、数据库集成等,使得开发Web应用程序更加方便和高效。
因此,可以说Flask是基于Werkzeug的,而Werkzeug是基于WSGI的。Flask使用Werkzeug来处理HTTP请求和响应,而Werkzeug则遵循WSGI规范与Web服务器(如nginx服务器)进行通信。这种层次化的关系使得Flask能够灵活地与不同的Web服务器和框架进行集成和扩展。
注意:如果Flask直连浏览器,那么Flask本身便充当了web服务器的功能,此时,并未用到WSGI
在Flask直接连接浏览器的情况下,不需要使用WSGI(Web Server Gateway Interface)。WSGI是一种规范,定义了Web服务器和Web应用程序之间的通信接口。它允许不同的Web服务器和Web应用程序框架进行交互。
当Flask直接连接浏览器时,Flask充当了Web服务器的角色,并且直接处理HTTP请求和响应。在这种情况下,Flask不需要与其他Web服务器进行通信,因此不需要使用WSGI。
然而,当Flask应用程序部署到生产环境时,通常会使用WSGI服务器来处理请求。WSGI服务器可以与Flask应用程序进行交互,并将来自Web服务器的请求转发给应用程序进行处理。在这种情况下,Flask应用程序将作为WSGI应用程序运行,而不是直接连接到浏览器。常见的WSGI服务器包括Werkzeug、Gunicorn、uWSGI和mod_wsgi等。
为什么flask与web服务器交互需要wsgi,flask与浏览器直连,就不需要了?
Flask与Web服务器交互需要WSGI的原因是为了实现Web应用程序与Web服务器之间的解耦。WSGI(Web Server Gateway Interface)是一种规范,定义了Web服务器和Web应用程序之间的通信接口。它允许不同的Web服务器和Web应用程序框架进行交互。
当Flask应用程序直接连接浏览器时,Flask充当了Web服务器的角色,并直接处理HTTP请求和响应。在这种情况下,Flask不需要与其他Web服务器进行通信,因此不需要使用WSGI。
然而,当Flask应用程序部署到生产环境时,通常会使用WSGI服务器来处理请求。WSGI服务器可以与Flask应用程序进行交互,并将请求转发给应用程序进行处理。这种架构的好处是可以实现解耦,使得Web应用程序与具体的Web服务器无关,可以在不同的服务器上部署和扩展。
因此,当Flask应用程序直接连接浏览器时,不需要使用WSGI。但当Flask应用程序与Web服务器交互时,需要使用WSGI来实现通信和解耦。
支持WSGI的服务有很多,Werkzeug只是其中一种,具体可以参考这里
参考文章
参考文章:https://medium.com/analytics-vidhya/what-is-wsgi-web-server-gateway-interface-ed2d290449e
拓展:有哪些常见的web服务器(web server)?
以下是一些常见的Web服务器:
-
Apache HTTP Server:Apache是最流行的开源Web服务器之一,具有广泛的功能和可扩展性。
-
Nginx:Nginx是一个高性能的开源Web服务器,以其轻量级和高并发处理能力而闻名。
-
Microsoft IIS:Internet Information Services(IIS)是微软的Web服务器,主要用于Windows操作系统。
-
Lighttpd:Lighttpd是一个轻量级的Web服务器,特别适用于高并发和低资源消耗的场景。
-
Caddy:Caddy是一个现代化的Web服务器,具有自动HTTPS配置和易用性等特点。
-
Gunicorn:Gunicorn(绿色独角兽)是一个基于Python的WSGI HTTP服务器,常用于部署Python Web应用程序。
-
uWSGI:uWSGI是一个高性能的Web服务器和应用服务器,支持多种编程语言和协议。
这是一些常见的Web服务器,还有其他许多可选的服务器,每个服务器都有其特定的特点和适用场景。