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
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
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
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:
DEFAULT_PORT = "8080"
It works with python 2.7 but it should work with newer versions of python as well. Good luck
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__)) 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
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.
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>Libsite-packagesdjangocoremanagementcommandsrunserver.py and set
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 …..
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
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)
Create enviroment variable in your .bashrc
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
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/
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
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.
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
If you wish to change the default configurations then follow this steps:
Open terminal type command
Now open runserver.py file in nano editor as superuser
$ sudo nano runserver.py
find the ‘default_port’ variable then you will see the default port no is ‘8000’. Now you can change it to whatever you want.
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
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
or you pass the port like this
python manage.py runserver 5000
python manage.py runserver
first you apply the migrations for app
python manage.py migrate
python manage.py runserver <your port>
after in browser run 127.0.0.1:(your port)
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
If not, delete this parameter.
in the last version of Django(Right now: 4.0.3), you can add these lines to your settings.py file
from django.core.management.commands.runserver import Command as runserver runserver.default_port = "8000"
in your project manage.py file add
from django.core.management.commands.runserver import Command as runserver
then in def main():
runserver.default_port = "8001"