Ich möchte den Standardport, den manage.py runserver
Abhört, in einem fremden config.ini
Spezifizierbar machen. Gibt es eine einfachere Lösung, als sys.argv
In manage.py
Zu analysieren und den konfigurierten Port einzufügen?
Das Ziel ist es, ./manage.py runserver
Auszuführen, ohne jedes Mal Adresse und Port angeben zu müssen, aber die Argumente aus config.ini
Zu übernehmen.
erstellen Sie ein Bash-Skript mit folgenden Elementen:
#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
speichern Sie es als Runserver in demselben Verzeichnis wie manage.py
chmod +x runserver
und starte es als
./runserver
Tatsächlich ist der einfachste Weg, den (einzigen) Port in der Entwicklung zu ändern Django Server ist wie folgt:
python manage.py runserver 7000
das sollte auf dem Entwicklungsserver laufen http://127.0.0.1:7000/
Ab Django 1.9, die einfachste Lösung, die ich gefunden habe (basierend auf der Lösung von Quentin Stafford-Fraser), besteht darin, ein paar Zeilen zu manage.py
Hinzuzufügen, um die Standardportnummer zuvor dynamisch zu ändern Aufrufen des Befehls runserver
:
if __== "__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)
Alle folgenden Befehle sind möglich, um den Port zu ändern, während Django ausgeführt wird:
python manage.py runserver 127.0.0.1:7000
python manage.py runserver 7000
python manage.py runserver 0:7000
Erstelle eine Unterklasse von Django.core.management.commands.runserver.Command
und überschreibe das default_port
Mitglied. Speichern Sie die Datei als eigenen Verwaltungsbefehl, z. unter <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
Ich lade hier die Standardeinstellungen für das Portformular (das wiederum andere Konfigurationsdateien liest), aber Sie können es genauso gut direkt aus einer anderen Datei lesen.
Wir haben einen neuen 'runserver'-Verwaltungsbefehl erstellt, der eine dünne Hülle um den Standard-Port darstellt, aber den Standard-Port ändert. Grob erstellen Sie management/commands/runserver.py
und füge so etwas ein:
# 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
Ich bin sehr spät zur Party hier, aber wenn Sie ein IDE wie PyCharm verwenden, gibt es eine Option in "Konfigurationen bearbeiten" unter dem Menü "Ausführen" (Ausführen> Konfigurationen bearbeiten), wo Sie Dies ist natürlich nur relevant, wenn Sie über PyCharm debuggen/testen.
Erstellen Sie eine Umgebungsvariable in Ihrem .bashrc
export RUNSERVER_PORT = 8010
Erstellen Sie einen Alias
alias runserver = 'Django-admin runserver $ RUNSERVER_PORT'
Ich benutze zsh und virtualenvs wrapper. Ich habe den Export in Projekte nach dem Aktivieren des Skripts und dem Zuweisen des Ports für jedes Projekt vorgenommen.
workon someproject
runserver
Wenn Sie die Standardkonfigurationen ändern möchten, gehen Sie folgendermaßen vor:
Befehl zum Öffnen des Terminaltyps
$ /usr/local/lib/python<2/3>.x/dist-packages/Django/core/management/commands
Öffnen Sie nun die Datei runserver.py im Nano-Editor als Superuser
$ Sudo nano runserver.py
wenn Sie die Variable 'default_port' finden, sehen Sie, dass die Standardportnummer '8000' ist. Jetzt können Sie es ändern, was Sie wollen.
Beenden Sie nun die Datei und speichern Sie sie mit "STRG + X und Y zum Speichern der Datei".
Hinweis: Ersetzen Sie <2/3> .x durch Ihre verwendbare Version von Python
Dies ist ein alter Beitrag, aber für diejenigen, die interessiert sind:
Wenn Sie die Standardportnummer so ändern möchten, dass Sie beim Ausführen des Befehls "runserver" mit Ihrem bevorzugten Port beginnen, gehen Sie wie folgt vor:
DEFAULT_PORT = "8080"
Es funktioniert mit python 2.7, aber es sollte auch mit neueren Versionen von python funktionieren. Viel Glück