python django django-manage.py manage.py

python - django cambia el puerto predeterminado del servidor de ejecución



django-manage.py manage.py (12)

Me gustaría hacer el puerto predeterminado que manage.py runserver escucha en un config.ini extraño. ¿Existe una solución más fácil que analizar sys.argv dentro de manage.py e insertar el puerto configurado?

El objetivo es ejecutar ./manage.py runserver sin tener que especificar la dirección y el puerto cada vez, pero teniendo que tomar los argumentos de config.ini .


  1. Crea una variable de entorno en tu .bashrc

    exportar RUNSERVER_PORT = 8010

  2. Crear alias

    alias runserver = ''django-admin runserver $ RUNSERVER_PORT''

Estoy usando envoltorio zsh y virtualenvs. Puse exportación en proyectos postactivate script y asign puerto para cada proyecto.

workon someproject runserver


A partir de Django 1.9, la solución más simple que he encontrado (basada en la solución de Quentin Stafford-Fraser) es agregar algunas líneas a manage.py que modifican dinámicamente el número de puerto predeterminado antes de invocar el comando runserver :

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)


Creamos un nuevo comando de administración ''runserver'' que es un contenedor delgado alrededor del estándar, pero cambia el puerto predeterminado. Aproximadamente, creas management/commands/runserver.py y pones algo como esto:

# 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


Cree una subclase de django.core.management.commands.runserver.Command y sobrescriba el miembro default_port . Guarde el archivo como un comando de administración propio, por ejemplo, bajo <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

Estoy cargando la configuración de formulario de puerto predeterminada aquí (que a su vez lee otros archivos de configuración), pero también podría leerla directamente de otro archivo.


En Pycharm puedes simplemente agregar el puerto a los parámetros


En realidad, la forma más sencilla de cambiar (solo) el puerto en el servidor de desarrollo Django es como:

python manage.py runserver 7000

que debería ejecutar el servidor de desarrollo en http://127.0.0.1:7000/


Esta es una publicación anterior pero para aquellos que están interesados:

Si desea cambiar el número de puerto predeterminado para que cuando ejecute el comando "runserver" comience con su puerto preferido, haga lo siguiente:

  1. Encuentra tu instalación de python. (Puede tener múltiples pitones instaladas y también puede tener su versión de entorno virtual así que asegúrese de encontrar la correcta)
  2. Dentro de la carpeta python, ubique la carpeta site-packages. Dentro de eso encontrarás tu instalación django
  3. Abra los comandos django folder-> core -> management ->
  4. Dentro de la carpeta de comandos abra el script runserver.py con un editor de texto
  5. Encuentre el campo DEFAULT_PORT. es igual a 8000 por defecto. Cámbielo a lo que quiera DEFAULT_PORT = "8080"
  6. Reinicie su servidor: python manage.py runserver y vea que usa su número de puerto establecido

Funciona con Python 2.7 pero también debería funcionar con las versiones más nuevas de python. Buena suerte


Estaba luchando con el mismo problema y encontré una solución. Supongo que puede ayudarte. cuando ejecuta python manage.py runserver , tomará 127.0.0.1 como dirección IP predeterminada y 8000 como número de puerto predeterminado que se puede configurar en su entorno python. En su configuración de python, vaya a <your python env>/Lib/site-packages/django/core/management/commands/runserver.py y establezca 1. default_port = ''<your_port>''
2. encuentra esto debajo de la manija de def y establece
if not options.get(''addrport''): self.addr = ''0.0.0.0'' self.port = self.default_port

Ahora, si ejecuta "python manage.py runserver", se ejecutará de forma predeterminada en "0.0.0.0:

Disfruta de la codificación .....


Llego muy tarde a la fiesta aquí, pero si usa un IDE como PyCharm, hay una opción en ''Editar configuraciones'' en el menú ''Ejecutar'' (Ejecutar> Editar configuraciones) donde puede especificar un puerto predeterminado. Esto, por supuesto, es relevante solo si está depurando / probando a través de PyCharm.


Si desea cambiar las configuraciones predeterminadas, siga estos pasos:

  1. Comando de tipo de terminal abierto

    $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands

  2. Ahora abra el archivo runserver.py en el editor nano como superusuario

    $ sudo nano runserver.py

  3. encuentra la variable ''default_port'' y verás que el puerto predeterminado no es ''8000''. Ahora puedes cambiarlo a lo que quieras.

  4. Ahora salga y guarde el archivo usando "CTRL + X e Y para guardar el archivo"

Nota: Reemplace <2/3> .x con su versión utilizable de python


Todos los siguientes comandos son posibles para cambiar el puerto mientras se ejecuta django:

python manage.py runserver 127.0.0.1:7000 python manage.py runserver 7000 python manage.py runserver 0:7000


crea un script bash con lo siguiente:

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

guárdelo como servidor de ejecución en el mismo directorio que manage.py

chmod +x runserver

y ejecutarlo como

./runserver