使用Django和Flask

时间:2013-06-22 01:02:45

标签: django django-templates flask jinja2 flask-sqlalchemy


情况:

我暂时考虑使用Django的情况

  1. 提供HTML(由Django的模板提供)
  2. 提供所有静态文件,如来自Django项目的CSS,JS
  3. 我的意图是使用Django停在这里。将javascript文件下载到客户端后,他们使用RESTful API(Ajax方式)与Flask后端进行通信。


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

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

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

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

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


    我的问题

    简短一句:这可行吗?或者这听起来是个疯狂的想法?

    长篇:你能提供一些指导吗?

    谢谢,

4 个答案:

答案 0 :(得分:7)

我对派对来说有点迟,但Application Dispatching应该对此有所帮助。根据文档中的介绍,它是如何进行的:

  

应用程序调度是组合多个Flask的过程   WSGI级别的应用程序。您不仅可以组合Flask   应用程序到更大的但是任何WSGI应用程序。这个   甚至允许你在中运行Django和Flask应用程序   如果你愿意,可以并排翻译。

答案 1 :(得分:5)

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

  

这可行吗?或者这听起来是个疯狂的想法?

两者都是:)

  

你能提供一些指导吗?

这是一个简单的方法:

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

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

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

答案 2 :(得分:1)

您可以使用 Django 使用 Django 模板创建 HTML 并通过 Flask 提供它们。这是可行的。

答案 3 :(得分:0)

与Jinja和Django模板类似,你真的需要告诉你的Django开发人员只使用Jinja。您将为此项目增加复杂性,以使该项目取得成功。

没有Django开发人员,只有开发人员。