开发者

How to convert the django web application into the desktop application

开发者 https://www.devze.com 2023-02-03 05:03 出处:网络
How to convert the web site develpoed in django, python into deskt开发者_如何学Cop application.

How to convert the web site develpoed in django, python into deskt开发者_如何学Cop application. I am new to python and django can you please help me out

Thanks in Advance


I think you should just create an application that connects to the webserver. There is a good answer to getting RESTful API calls into your django application. This means you'd basically just be creating a new front-end for your server.

Using django-rest-interface

It doesn't make sense to rewrite the entire django application as a desktop application. I mean, where do you want to store the data?


For starters, you'll have to replace the web UI with a desktop technology like Tk/Tcl.

If you do that, you may not want to use HTTP as the protocol between the client and the services.

Django is a web framework. If you're switching to a desktop, you'll have to forego Django.


I would try to replicate the Django application functionality with the PyQt toolkit.

You can in fact embed web content in PyQt applications, with the help of QtWebKit. I would post some potentially useful links, but apparently I have too low a reputation to post more than one :)


There are two places you can go to try to decouple the view and put it into a new desktop app. First you can use the existing controller and model and adapt a new view to that. Second, you can use only the existing model and build a new view and controller.

If you haven't adhered closely enough to the MVC principles that you can detach the model from the rest of the application, you can simply rewrite the entire thing. if you are forced to go this route, bail on django and http entirely (as duffymo suggests above).

You have to also evaluate these solutions based upon performance requirements and "heaviness" of the services. If you have stringent performance requirements then relying on the HTTP layer just gets in the way, and providing a simple API into your model is the way to go.

There are clearly a lot of possibly solutions but this is the approach I would take to deciding what the appropriate one is...


It is possible to convert a django application to a desktop app with pywebview with some line of codes. Frist create a python file gui.py in directory where manage.py exists. install pywebview through pip, the write the code in 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()

then run gui.py with the command python gui.py. IT will create a window like desktop app


There's a project called Camelot which seems to try to combine Django-like features on the desktop using PyQt. Haven't tried it though.


I am thinking about a similar Problem.

Would it be enough to habe a minimal PyQt Gui that enables you to present the djando-website from localhost (get rid of TCP/HTTPS on loop interface somehow) via QtWebkit?

All you seem to need is to have a minimal Python-Broser, that surfs the build in Webserver (and i guess you could even call Django directly for the html-payload without going over the HTTP/TCP layers).


I have django manage.py runserver in .bat file and a localhost bookmark bar in a browser and whola a django-desktop-app. Or make your own browser that opens localhost. Creating a web-browser with Python and PyQT

0

精彩评论

暂无评论...
验证码 换一张
取 消