如何将django Web应用程序转换为桌面应用程序

时间:2011-01-10 12:11:14

标签: python django

如何将在django,python中开发的网站转换为桌面应用程序。 我是python的新手,django可以帮助我吗

先谢谢

8 个答案:

答案 0 :(得分:2)

对于初学者,您必须使用Tk / Tcl等桌面技术替换Web UI。

如果这样做,您可能不希望使用HTTP作为客户端和服务之间的协议。

Django是一个Web框架。如果您要切换到桌面,则必须放弃Django。

答案 1 :(得分:2)

我认为您应该创建一个连接到Web服务器的应用程序。将RESTful API调用放入django应用程序是一个很好的答案。这意味着您基本上只是为您的服务器创建一个新的前端。

Using django-rest-interface

整个 django应用程序重写为桌面应用程序是没有意义的。我的意思是,你想在哪里存储数据?

答案 2 :(得分:1)

我会尝试使用PyQt toolkit复制Django应用程序功能。

事实上,在QtWebKit的帮助下,您可以在PyQt应用程序中嵌入Web内容。我会发布一些可能有用的链接,但显然我的声誉太低,不能发布多个:)

答案 3 :(得分:1)

您可以尝试将视图分离并将其放入新的桌面应用程序中。首先,您可以使用现有的控制器和模型,并根据需要调整新视图。其次,您只能使用现有模型并构建新视图和控制器。

如果你没有完全遵守MVC原则,你可以将模型与应用程序的其余部分分离,你可以简单地重写整个事物。如果你被迫走这条路,请完全保释django和http(正如duffymo建议的那样)。

您还必须根据服务的性能要求和“沉重感”来评估这些解决方案。如果您有严格的性能要求,那么依赖HTTP层就会受到阻碍,并且为您的模型提供一个简单的API是可行的方法。

显然有很多可能的解决方案,但这是我决定适当的解决方案的方法......

答案 4 :(得分:0)

有一个名为Camelot的项目似乎尝试使用PyQt在桌面上组合类似Django的功能。虽然没试过。

答案 5 :(得分:0)

我正在考虑类似的问题。

是否足以拥有一个最小的PyQt Gui,它可以让你通过QtWebkit从localhost呈现djando-website(以某种方式摆脱循环界面上的TCP / HTTPS)?

您似乎需要的是拥有一个最小的Python-Broser,它可以在Web服务器中进行构建(我猜您甚至可以直接调用Django来获取html-payload,而无需通过HTTP / TCP层)。

答案 6 :(得分:0)

我在.bat文件中有django manage.py runserver,在浏览器中有localhost书签栏,而且还有django-desktop-app。或制作自己的浏览器以打开localhost。 Creating a web-browser with Python and PyQT

答案 7 :(得分:0)

可以使用 pywebview 将 django 应用程序转换为桌面应用程序,并使用一些代码行。首先在 manage.py 所在的目录中创建一个 python 文件 gui.py。通过pip安装pywebview,在gui.py中编写代码

import os
import sys
import time
from threading import Thread
import webview


def start_webview():
    window = webview.create_window('Hello world', 'http://localhost:8000/', confirm_close=True, width=900, height=600)
    webview.start()
    window.closed = os._exit(0)


def start_startdjango():
    if sys.platform in ['win32', 'win64']:
        os.system("python manage.py runserver {}:{}".format('127.0.0.1', '8000'))
        # time.sleep(10)
    else:
        os.system("python3 manage.py runserver {}:{}".format('127.0.0.1', '8000'))
        # time.sleep(10)


if __name__ == '__main__':
    Thread(target=start_startdjango).start()
    start_webview()

然后使用命令 python gui.py 运行 gui.py。 IT 将创建一个类似于桌面应用程序的窗口