Django runserver from Python script
Asked Answered
H

2

9

The normal way to start the Django server is to run the following command from a terminal or a bash script:

python manage.py runserver [Ip.addr]:[port] 

e.g.

python manage.py runserver 0.0.0.0:8000

How can I start a Django server from a Python script?

One option is the following

import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
    from django.core.management import execute_from_command_line
    args = ['name', 'runserver', '0.0.0.0:8000']
    execute_from_command_line(args)

Is there a better way?

Haemal answered 17/6, 2015 at 13:42 Comment(2)
Why do you want to start it from a python script?Elenor
I would suggest using an actual webserver, like the docs recommend.Argentina
S
16

Python has already builtin HTTP server

python -m SimpleHTTPServer

OR you have an alternative to run the django server

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")

from django.core.management import call_command
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application()
call_command('runserver',  '127.0.0.1:8000')
Sepulcher answered 17/6, 2015 at 14:9 Comment(3)
Thanks for your answer but I'm getting this error: django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.Haemal
before call_command , you can try : from django.core.wsgi import get_wsgi_application application = get_wsgi_application()Sepulcher
yes that works, Edit your answer and I'll select it as the write answerHaemal
T
1

Just responding to this because I found a way to automize the django runserver command and open the project on the broswer:

import os
import webbrowser
import asyncio


# RUNSERVER
async def runserver():
    path = "D:\Your\Django\Project\Full\Path\SimpleBlog"
    os.chdir(path)
    os.system("py manage.py runserver")

# OPEN BROWSER
def openproject():
    webbrowser.open_new_tab("http://127.0.0.1:8000/index")

# EXECUTE PROGRAM
async def main():
    task1 = asyncio.create_task(runserver())
    openproject()
    await task1



asyncio.run(main())

Thats the script. Then I made the executable version of it with pyinstaller module and created a shortcut on my desktop.

Tiv answered 3/10, 2022 at 19:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.