django change default runserver port

PythonDjangoDjango manage.pymanage.py

Python Problem Overview


I would like to make the default port that manage.py runserver listens on specifiable in an extraneous config.ini. Is there an easier fix than parsing sys.argv inside manage.py and inserting the configured port?

The goal is to run ./manage.py runserver without having to specify address and port every time but having it take the arguments from the config.ini.

Python Solutions


Solution 1 - Python

create a bash script with the following:

#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>

save it as runserver in the same dir as manage.py

chmod +x runserver

and run it as

./runserver

Solution 2 - Python

Actually the easiest way to change (only) port in development Django server is just like:

python manage.py runserver 7000

that should run development server on http://127.0.0.1:7000/

Solution 3 - Python

As of Django 1.9, the simplest solution I have found (based on Quentin Stafford-Fraser's solution) is to add a few lines to manage.py which dynamically modify the default port number before invoking the runserver command:

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")

    import django
    django.setup()

    # Override default port for `runserver` command
    from django.core.management.commands.runserver import Command as runserver
    runserver.default_port = "8080"

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

Solution 4 - Python

All of the following commands are possible to change the port while running django:

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000

Solution 5 - Python

Create a subclass of django.core.management.commands.runserver.Command and overwrite the default_port member. Save the file as a management command of your own, e.g. under <app-name>/management/commands/runserver.py:

from django.conf import settings
from django.core.management.commands import runserver

class Command(runserver.Command):
    default_port = settings.RUNSERVER_PORT

I'm loading the default port form settings here (which in turn reads other configuration files), but you could just as well read it from some other file directly.

Solution 6 - Python

We created a new 'runserver' management command which is a thin wrapper around the standard one but changes the default port. Roughly, you create management/commands/runserver.py and put in something like this:

# Override the value of the constant coded into django...
import django.core.management.commands.runserver as runserver
runserver.DEFAULT_PORT="8001"

# ...print out a warning...
# (This gets output twice because runserver fires up two threads (one for autoreload).
#  We're living with it for now :-)
import os
dir_path = os.path.splitext(os.path.relpath(__file__))[0]
python_path = dir_path.replace(os.sep, ".")
print "Using %s with default port %s" % (python_path, runserver.DEFAULT_PORT)
 
# ...and then just import its standard Command class.
# Then manage.py runserver behaves normally in all other regards.
from django.core.management.commands.runserver import Command

Solution 7 - Python

In Pycharm you can simply add the port to the parameters

enter image description here

Solution 8 - Python

you can try to add an argument in manage.py like this

python manage.py runserver 0.0.0.0:5000 

> python manage.py runserver <your IP>:<port>

or you pass the port like this

python manage.py runserver 5000

> python manage.py runserver <your port>

Solution 9 - Python

first you apply the migrations for app

python manage.py migrate

then:

python manage.py runserver <your port>

after in browser run 127.0.0.1:(your port)

Solution 10 - Python

I'm very late to the party here, but if you use an IDE like PyCharm, there's an option in 'Edit Configurations' under the 'Run' menu (Run > Edit Configurations) where you can specify a default port. This of course is relevant only if you are debugging/testing through PyCharm.

Solution 11 - Python

  1. Create enviroment variable in your .bashrc

    export RUNSERVER_PORT=8010

  2. Create alias

    alias runserver='django-admin runserver $RUNSERVER_PORT'

Im using zsh and virtualenvs wrapper. I put export in projects postactivate script and asign port for every project.

workon someproject
runserver

Solution 12 - Python

If you wish to change the default configurations then follow this steps:

  1. Open terminal type command

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
    
  2. Now open runserver.py file in nano editor as superuser

     $ sudo nano runserver.py
    
  3. find the 'default_port' variable then you will see the default port no is '8000'. Now you can change it to whatever you want.

  4. Now exit and save the file using "CTRL + X and Y to save the file"

Note: Replace <2/3>.x with your usable version of python

Solution 13 - Python

For Django 3.x, just change default_port in settings.py. Like this:

from decouple import config
import django.core.management.commands.runserver as runserver

runserver.Command.default_port = config('WebServer_Port', default = "8088")

Then, if you want to specify the port, just add a new line in your setting.ini

[settings]
WebServer_Port=8091

If not, delete this parameter.

Solution 14 - Python

This is an old post but for those who are interested:

If you want to change the default port number so when you run the "runserver" command you start with your preferred port do this:

  1. Find your python installation. (you can have multiple pythons installed and you can have your virtual environment version as well so make sure you find the right one)
  2. Inside the python folder locate the site-packages folder. Inside that you will find your django installation
  3. Open the django folder-> core -> management -> commands
  4. Inside the commands folder open up the runserver.py script with a text editor
  5. Find the DEFAULT_PORT field. it is equal to 8000 by default. Change it to whatever you like DEFAULT_PORT = "8080"
  6. Restart your server: python manage.py runserver and see that it uses your set port number

It works with python 2.7 but it should work with newer versions of python as well. Good luck

Solution 15 - Python

I was struggling with the same problem and found one solution. I guess it can help you. when you run python manage.py runserver, it will take 127.0.0.1 as default ip address and 8000 as default port number which can be configured in your python environment. In your python setting, go to <your python env>\Lib\site-packages\django\core\management\commands\runserver.py and set

  1. default_port = '<your_port>'
  2. find this under def handle and set
    if not options.get('addrport'): self.addr = '0.0.0.0' self.port = self.default_port

Now if you run "python manage.py runserver" it will run by default on "0.0.0.0:

Enjoy coding .....

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjonnyView Question on Stackoverflow
Solution 1 - PythonfixmycodeView Answer on Stackoverflow
Solution 2 - PythonQbackView Answer on Stackoverflow
Solution 3 - PythonBillyBBoneView Answer on Stackoverflow
Solution 4 - PythonKrishnamoorthy AcharyaView Answer on Stackoverflow
Solution 5 - PythonFeuermurmelView Answer on Stackoverflow
Solution 6 - PythonQuentin Stafford-FraserView Answer on Stackoverflow
Solution 7 - PythonchaggyView Answer on Stackoverflow
Solution 8 - PythonperymerdekaView Answer on Stackoverflow
Solution 9 - PythonthHENRYView Answer on Stackoverflow
Solution 10 - PythonSmittyView Answer on Stackoverflow
Solution 11 - PythonPavel1114View Answer on Stackoverflow
Solution 12 - PythonrhoitjadhavView Answer on Stackoverflow
Solution 13 - PythonbeibeituView Answer on Stackoverflow
Solution 14 - PythonDaniel KissView Answer on Stackoverflow
Solution 15 - PythonAmrendraView Answer on Stackoverflow