为了账号安全,请及时绑定邮箱和手机立即绑定

Django Asyc Views是ajax的替代品吗?

Django Asyc Views是ajax的替代品吗?

GCT1015 2022-08-18 15:40:48
我有一些困惑,并希望通过提出一些问题来清除它们。根据这个Ajax定义:Ajax 是一组 Web 开发技术,在客户端使用许多 Web 技术来创建异步 Web 应用程序。使用Ajax,Web应用程序可以从服务器异步发送和检索数据,而不会干扰现有页面的显示和行为。1. 它与 Django 3.0 中提供的异步视图功能不相同吗?1A.如果 Async Django 不会完全取代 AJAX,那么它值得学习吗?2. 这对渠道意味着什么?Channels是一个采用Django并将其功能扩展到HTTP之外的项目 - 处理WebSockets,聊天协议,IoT协议等。它建立在名为ASGI的Python规范之上。异步 django 也可以取代通道吗?通过推理建议与这些主题相关的内容。例如,将AJAX与JSON一起使用(只是一个例子)我知道将Django转换为异步需要时间,因此在回答时要牢记这一点
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

我不是Python开发人员,但我从头开始实现了几个Web服务器,我想我可以帮助你。

服务器渲染与客户端渲染

在Web开发中,有两种方法可以向最终用户交付内容,称为服务器呈现和客户端呈现

服务器端呈现 (SSR) — 传统的呈现方法,基本上页面的所有资源都位于服务器上。然后,当请求页面(通常来自Web浏览器)时,下载Html,JS和CSS。框架还可以动态地基于后端逻辑创建html,并最终下载它。在这一点上,许多框架为立即创建具有“惊人”功能的应用程序提供了奇迹。

技术: java, c#, python, nodejs, etc

客户端渲染(CSR) - 有时称为“前端渲染”是一种较新的渲染方法,它依赖于通过JavaScript框架在客户端(浏览器)上执行的JS。因此,当请求页面时,下载了最小,很少或空的索引.html,css和js。在这里,javascript负责发送或接收数据,并在不刷新整个页面的情况下更新页面的最小部分。最后,当用户单击或触发某些事件时,javascript 将使用异步调用 (ajax) 将通常的数据发送或接收到 api rest (json)。

技术:react,angular,vue,aurelia,jquery,纯javascript等

Django 是 Server Rendering Framework

正如你所看到的:最简单的CRUD示例Hello World应用程序,你需要python(服务器语言)在Django中开发。Django在内部创建你的html页面,并将它们呈现给你的用户。

React(angular,vue等)是一个客户端渲染框架

想象一下 OMS 提供的 API。此 API 为我们提供了和端点,以便按国家/地区获取 covid 统计信息:

想象一下,你来自z世代,你不了解java,python,c#和其他古代语言。您需要开发一个简单的仪表板,显示感染病毒的第一批国家的covid统计数据。

您的网络将具有视觉上的酷炫效果:使用空框加载主页,然后逐个显示从前十个国家/地区开始的统计信息。

为了达到这个效果,你将使用 React 渲染一个带有空框的主页,并且你将触发对 api 的几个请求:

您的主页仍在工作,用户正在导航,滚动,几秒钟后,框中会填充统计信息。

因此,我们可以说您的Web执行了异步调用,允许动态加载部分网页...等待 等待 这是AJAX:D

异步视图:Python 异步代码与 ASGI

Python Web框架的新挑战之一是适应异步模型的潜在好处。

Django支持编写异步(“async”)视图,以及一个完全支持异步的请求堆栈,如果你在ASGI下运行。

ASGI规范是一个迭代但基本的重新设计,它提供了一个异步服务器/应用程序接口,支持HTTP,HTTP / 2和WebSockets。

正如你在下面的链接中看到的,异步视图不是带有ajax的html页面,因为使用ASGI,我们可以说这是Django尝试以异步方式开发,但在服务器中使用python:

结论

异步视图不是带有ajax的html页面,只是一个python代码,而是以异步方式在服务器中运行。

您的问题

  1. Async Views vs AJAX?

  • 异步视图是 python(服务器)中的代码,也是浏览器中的 ajax 代码。当然,异步视图Ajax并不相关。

  1. 这不也是Django中的异步视图吗?

  • 是的,异步视图是一种异步代码,但在服务器中,而不是在客户端,如react,angular等

  1. 如果 Async Django 不会完全取代 AJAX,那么它值得学习吗?

  • 这取决于你的目标。目前,Web开发人员的工作(检查此页面的远程工作部分 - >)正在请求异步技能,但在客户端,如react,angular,vue等。Java,python和其他强大的语言正在利用它的力量来满足后端需求。

  1. 这对渠道意味着什么?

  • 作为你的段落,通道可以用于api和Web,但具有服务器策略(python)。

  1. 异步 django 也可以取代通道吗?

  • 我认为不是。也许通道正在使用或将使用异步技术,如异步视图。


查看完整回答
反对 回复 2022-08-18
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

根据我掌握的信息,(不知道AJAX是什么,但许多Django教程都提到了它,所以它在我的学习愿望清单上)

AJAX 代表 Asynchronous Javascript 和 XML。它归结为执行异步调用,允许动态加载部分网页。这意味着在更改数据时仅刷新页面的一部分,而不是整个页面。它允许您的页面从服务器或API获取数据,并允许用户同时查看页面。从 API 检索信息后,可以更新视图以匹配新数据。

这不也是Django中的异步视图吗?

是的,看起来Django将允许您在视图本身中执行这些技术。可能有一些用例可以使用AJAX,而Django的异步功能不能,但是如果不研究它,我无法给出明确的答案。

1A.如果 Async Django 不会完全取代 AJAX,那么它值得学习吗?

AJAX是否仍然值得学习。我会说是的。我是所有行业的杰克的心态,没有大师。如果你打算用Django度过余生,也许这是不值得的。然而,AJAX在其他技术中很常见,所以如果你打算冒险在Django堆栈之外,那么这将是值得学习的。如果您深入研究 AJAX,您还将获得了解异步通信工作原理的一些基本原则的额外好处。

  1. 这对渠道意味着什么?

同样,这只是推测,但我假设通道将提供异步Django不会立即具有的其他功能(在你提到的摘录中:处理WebSockets,聊天协议,物联网协议等等。Django作为异步本身并不提供这些功能)。随着时间的推移,Django可能会采用其中一些功能,但我认为Channels仍然会有它的利基市场。


查看完整回答
反对 回复 2022-08-18
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号