使用 Django 减去 Web 服务器

Posted

技术标签:

【中文标题】使用 Django 减去 Web 服务器【英文标题】:Using Django minus the web server 【发布时间】:2011-05-02 14:29:44 【问题描述】:

我正在编写一个联合客户端,目的是为设备提供一个客户端,以及一个具有相同功能的网站。我将使用 Django 开发网站——这已经决定了;客户端应使用 python 编写,带有 CLI 和 PyQt4 GUI。我一直在写 clinet,它相当依赖数据库,因为所有内容都被缓存以使其能够在离线时读取。

今天让我感到震惊的是,在我的应用程序中使用 Django 模型是有意义的,以减少客户端和网站之间的重复工作。我的问题是分离它有多容易,以及我的客户端需要多少 Django 才能使用 Django 的模型。 AFAIK 我不需要运行服务器,但还需要什么?我的想法是为我的客户端生成与网站相同的 html,但使用 Qt 小部件显示它,而不是为浏览器提供页面。

有没有人尝试过这种事情?我已经开始着手这项工作了,但最好能收到有关潜在死胡同或会造成维护噩梦的警告...

【问题讨论】:

【参考方案1】:

阅读standalone Django scripts,您将走上通往胜利的道路。基本上,您真正要做的就是引用 Django settings.py(Django 期望的),然后引用 using models without web views or urls。

如果您真正感兴趣的只是使用 Django 的 ORM 来管理您的模型和数据库交互,您可能需要考虑改用 SQLAlchemy。

【讨论】:

如果你“p”?你在那里被截断了吗? :) 大声笑 - 是的 - 我正在使用智能手机 - 我不知道它实际上已经发布了。我要说的是,在我接受你的回答之前,我会先玩一下它,以防还有什么需要解释的。干杯! 谢谢,我决定使用独立的 Django 脚本。它具有可扩展性且更易于学习。【参考方案2】:

您仍然需要将 Django 应用程序作为 Web 服务器运行,但您可以将其限制为仅服务于 localhost 或其他内容。当然,您可以使用 QtWebKit 作为客户端。

【讨论】:

您确定我需要一个完整的应用程序来执行此操作吗?它似乎相当重量级,我希望能够只剥离数据库功能和模板引擎...... @BiggAl 好吧,您必须以某种方式呈现您的模板。我认为这样做会更简单。仅仅因为您不喜欢 Web 服务器的想法,似乎要经历很多麻烦。 目前看来@jathanism 提供的方法应该做得很好。我想在移动设备上部署客户端,所以我想让它尽可能地轻量级,但是如果你之前尝试过这个,如果你遇到了陷阱,请随时告诉我。

以上是关于使用 Django 减去 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Linux 下 将使用Python-Django开发的web应用布置到服务器上(亲测有效)

使用uWSGI和Nginx来设置Django和你的Web服务器

如何使用 Django 为 Flutter Web 应用程序提供服务?

同时使用 Django REST 框架和 Web 套接字

Nginx+uWSGI+Django部署web服务器

处理对 Django Web 应用程序的计算密集型请求,可能使用预分叉 RPC 服务器