【问题标题】:Using Django along with Flask将 Django 与 Flask 一起使用
【发布时间】:2013-06-19 05:45:27
【问题描述】:

情况:

我正在考虑使用 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。


我的问题

简短的:这可行吗?还是这听起来很疯狂?

长一:能否给点指导?

谢谢,

【问题讨论】:

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


    【解决方案1】:

    Jinja 和 Django 非常相似,您确实需要告诉您的 Django 开发人员只使用 Jinja。为了使这个项目取得成功,您将增加很多复杂性。

    没有 Django 开发者,只有开发者。

    【讨论】:

    • 谢谢。假设我选择使用 Django 或 Flask(但坚持使用一个)来完成这两项工作。如何保护我的 API 服务?我想我的 API 端点(Flask)应该需要一个令牌,如果客户端提供了正确的用户名/密码,则应该(由我的 Django 应用程序)授予该令牌。但是我的客户端(浏览器)如何持有这样的令牌(可以在 cookie 中设置)?
    • 看起来 Django-tastypie 给出了解决方案:django-tastypie.readthedocs.org/en/latest/…
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我参加聚会有点晚了,但Application Dispatching 应该能帮上忙。根据文档中的介绍,事情是这样的:

      应用调度是多个Flask组合的过程 WSGI 级别的应用程序。你不仅可以结合 Flask 应用程序变成更大的东西,但任何 WSGI 应用程序。这 甚至可以让你在 如果您愿意,可以并排使用相同的解释器。

      【讨论】:

        【解决方案4】:

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

        这可行吗?还是这听起来很疯狂?

        两者都同意:)

        能否给点指导?

        这里有一个简单的方法:

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

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

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

        【讨论】:

        • 如何保护我的 API 服务?我想我的 API 端点(Flask)应该需要一个令牌,如果客户端提供了正确的用户名/密码,则应该(由我的 Django 应用程序)授予该令牌。但是我的客户端(浏览器)如何持有这样的令牌(可以在 cookie 中设置)?
        • 如果您想做一些简单的事情,您可以使用 HTTP 基本身份验证来保护您的 API。然后客户端只需将凭据与每个 API 请求一起发送(当然,使用安全的 HTTP)。见thisthis
        猜你喜欢
        • 2014-08-16
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        • 2019-05-28
        • 2013-01-02
        • 2013-11-21
        • 2017-07-20
        • 2014-01-26
        相关资源
        最近更新 更多