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
.
Crea una variable de entorno en tu .bashrc
exportar RUNSERVER_PORT = 8010
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 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:
- 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)
- Dentro de la carpeta python, ubique la carpeta site-packages. Dentro de eso encontrarás tu instalación django
- Abra los comandos django folder-> core -> management ->
- Dentro de la carpeta de comandos abra el script runserver.py con un editor de texto
- Encuentre el campo DEFAULT_PORT. es igual a 8000 por defecto. Cámbielo a lo que quiera
DEFAULT_PORT = "8080"
- 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:
Comando de tipo de terminal abierto
$ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
Ahora abra el archivo runserver.py en el editor nano como superusuario
$ sudo nano runserver.py
encuentra la variable ''default_port'' y verás que el puerto predeterminado no es ''8000''. Ahora puedes cambiarlo a lo que quieras.
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