使用Django和Flask

che*_*hen 7 django django-templates jinja2 flask flask-sqlalchemy


情况:

我暂时考虑使用Django的情况

  1. 提供HTML(由Django的模板)
  2. 从Django项目中提供CSS,JS等所有静态文件

而我使用Django的意图就在这里停止.将javascript文件下载到客户端后,他们使用RESTful API(Ajax方式)与Flask后端进行通信.


为什么有两个框架?为什么这样?

我工作的这个项目的前端人员非常了解Django,我想我主要想使用他的CSS/HTML模板/ jquery技能.

我想拥有一个独立的API服务器,我觉得Flask是我需要的理想选择(从构建API服务的角度来看).

我想人们会建议"为什么不让Django家伙用Jinga2来模板?" (以这种方式,我们可以取消Django)我想我现在的答案是:我不希望他投入太多时间(学习)

我猜人们会建议"为什么不使用Django来提供Restful API调用?" (以这种方式,我们可以取消Flask)我想我现在的答案是:我(作为实现API逻辑的人)就像Flask一样.


我的问题

简短的一句:这可行吗?或者这听起来像个疯子?

长期:您能否给予一些指导?

谢谢,

DrS*_*SAR 8

我对派对来说有点晚了,但应用程序调度应该对此有所帮助.根据文档中的介绍,它是如何进行的:

应用程序调度是在WSGI级别上组合多个Flask应用程序的过程.您不仅可以将Flask应用程序组合成更大但任何WSGI应用程序.如果你愿意,这甚至可以让你在同一个解释器中并行运行Django和Flask应用程序.


Mig*_*uel 6

如果我是你,我会从设计师那里获取Django模板并将它们转换为Jinja2,然后在Flask中100%构建应用程序.但既然你问过......

这可行吗?或者这听起来像个疯子?

两个都是的:)

请你指点一下吗?

这是一个简单的方法:

你编写了两个应用程序,一个在Flask中,一个在Django中.假设您在尝试共享数据库或其他资源时解决了所有问题,现在您运行了两个应用程序,每个应用程序都有自己的Web服务器,并且每个应用程序都在不同端口上侦听请求.

您现在将代理Web服务器作为前端Web服务器放置到外部世界,并根据URL将来自客户端的请求代理到一个或另一个应用程序.您可以使Flask应用程序的所有URL都具有该格式http://hostname/api/...,然后键入apiURL中的URL以分隔代理服务器中的请求并将它们提供给正确的应用程序.

因为从外部所有请求转到相同的主机名和端口(代理服务器的端口),您将不会遇到跨站点脚本的任何问题.