Ich möchte das zum Standardport machen manage.py runserver hört auf spezifizierbar in einem fremden config.ini. Gibt es eine einfachere Lösung als das Parsen sys.argv Innerhalb manage.py und Einfügen des konfigurierten Ports?
Das Ziel ist zu laufen ./manage.py runserver ohne Adresse und Port jedes Mal angeben zu müssen, sondern die Argumente aus der nehmen zu müssen config.ini.
Wenn Sie den Befehl aus Ihrem Befehlszeilenverlauf ausführen, sind es noch weniger Tastenanschläge. ZB für mich ist es “runs“, und es führt automatisch den gleichen Befehl wie beim letzten Mal aus, also ist der Port usw. enthalten.
Speichern Sie es als Runserver im selben Verzeichnis wie manage.py
chmod +x runserver
und führen Sie es als aus
./runserver
Entweder das, oder ich denke darüber nach, einen benutzerdefinierten Verwaltungsbefehl hinzuzufügen.
– jonny
13. Mai 2014 um 19:56 Uhr
Sie können den Entwicklungsserver nicht programmgesteuert ausführen, daher funktioniert ein benutzerdefinierter Befehl nicht, es sei denn, er ruft die Shell mit etwas wie auf call. Wenn diese Lösung für Sie funktioniert, markieren Sie sie bitte als gelöst.
– Meinen Code reparieren
13. Mai 2014 um 20:21 Uhr
Ich habe tatsächlich angefangen zu verwenden supervisor dafür jetzt, das macht es noch einfacher zu verwalten. 🙂 Aber deine ist wohl die sauberste Lösung außer eine dedizierte zu schreiben runserver Skript.
– jonny
29. Mai 2014 um 16:14 Uhr
Supervisor ist eine gute Lösung, denn ich würde es nicht empfehlen, die Entwicklungsumgebung auszuführen. Sie verlieren unter anderem den Vorteil, den Server auf dem Terminal ausgeben zu lassen. Wenn Sie Supervisor wirklich verwenden möchten, wäre mein Rat, ihn mit einem voll ausgestatteten WSGI-Server wie Gunicorn zu verwenden. Bitte führen Sie den Entwicklungsserver nicht als Produktionsserver aus …
– Meinen Code reparieren
3. Juni 2014 um 1:53 Uhr
Dies ist nützlich, aber nicht großartig, wenn Sie mit mehreren Projekten gleichzeitig jonglieren. Ich hätte die folgende Antwort akzeptiert, in der der Port angegeben ist, der für jedes einzelne Projekt verwendet werden soll. Nur meine Meinung.
– Benutzer7179686
20. Juni 2017 um 12:23 Uhr
Tatsächlich ist der einfachste Weg, (nur) den Port in der Entwicklung des Django-Servers zu ändern, genau so:
In dieser Antwort geht es um das Ändern des Ports, nicht um das Ändern des Standardports.
– körperliche Anziehung
14. Juni 2018 um 14:32 Uhr
Dies sollte die richtige Antwort sein, akzeptierte impliziert auch die IP-Adresse und führt aus irgendeinem Grund manage.py aus, anstatt es über Python aufzurufen
– E.Serra
19. April 2021 um 12:40 Uhr
BillyBBone
Ab Django 1.9 besteht die einfachste Lösung, die ich gefunden habe (basierend auf der Lösung von Quentin Stafford-Fraser), darin, ein paar Zeilen hinzuzufügen manage.py die die Standardportnummer dynamisch ändern, bevor sie die aufrufen runserver Befehl:
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)
Obwohl es die ursprüngliche Frage nicht genau beantwortet und die Einrückung durcheinander gebracht wird (Code sollte von “import django” nach unten eingerückt werden), bevorzuge ich diese Antwort, da sie vollständig in sich geschlossen ist und keine Änderung der Eingaben erfordert auf der Kommandozeile.
– PurpleDiane
17. Juli 2016 um 22:43 Uhr
@PurpleDiane Die Einrückung ist behoben.
– Flimmer
28. Dezember 2016 um 11:10 Uhr
Meine manage.py sieht nicht wirklich so aus, ich denke, Django hat sich seitdem geändert
– NaturalBornCamper
26. Februar 2018 um 22:15 Uhr
Derzeit (Stand 2.0.3) können Sie einfach Folgendes hinzufügen: from django.core.management.commands.runserver import Command as runserver; runserver.default_port = "8080 zu Ihrer manage.py. Sie können die Abhöradresse auch ändern mit: runserver.default_addr
– Varga
8. März 2018 um 1:40 Uhr
Krishnamoorthy Acharya
Alle folgenden Befehle sind möglich, um den Port zu ändern, während Django ausgeführt wird:
Erstellen Sie eine Unterklasse von django.core.management.commands.runserver.Command und überschreibe die default_port Mitglied. Speichern Sie die Datei als eigenen Verwaltungsbefehl, zB 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 Standard-Port-Formulareinstellungen (die wiederum andere Konfigurationsdateien lesen), aber Sie könnten sie genauso gut direkt aus einer anderen Datei lesen.
Dies scheint die beste Lösung zu sein, aber mein Django 1.8.14 erkennt meine selbst erstellte Datei nicht runserver.py. Soll ich es irgendwo anmelden?
– körperliche Anziehung
14. Juni 2018 um 14:47 Uhr
@physicalattraction Ihre Datei befindet sich wahrscheinlich nicht am richtigen Ort. docs.djangoproject.com/en/2.0/howto/custom-management-commands beginnt mit einer Beschreibung, wo das Python-Modul für die abgelegt werden soll runserver Befehl. Vielleicht hast du auch eine andere App Auch Registrierung eines Befehls namens runserver. Versuchen Sie, Ihren Befehl umzubenennen, und prüfen Sie, ob er erkannt wird.
– Feuermurmel
27. Juni 2018 um 12:14 Uhr
Ich habe es eingefügt <app_name>/management/commands/runserver.pyaber dann Djangos Original runserver wird genutzt. Wenn ich es umbenenne in run_server.py, wird erkannt. Daran sehe ich nichts Besonderes runserver auf der Seite, auf die Sie verlinken.
– körperliche Anziehung
27. Juni 2018 um 16:51 Uhr
Die Sache ist staticfiles macht genau das was du machst empfehlen. Wenn Sie also Ihren Anweisungen folgen, wird das Bereitstellen statischer Dateien in der Entwicklung unterbrochen. Am besten importieren Sie aus django.contrib.staticfiles.management.commands.
– x-yuri
4. Januar 2019 um 2:41 Uhr
Quentin Stafford-Fraser
Wir haben einen neuen „runserver“-Verwaltungsbefehl erstellt, der ein dünner Wrapper um den Standard ist, aber den Standardport ändert. Grob erstellen Sie management/commands/runserver.py und gib sowas 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
Dies scheint die beste Lösung zu sein, aber mein Django 1.8.14 erkennt meine selbst erstellte Datei nicht runserver.py. Soll ich es irgendwo anmelden?
– körperliche Anziehung
14. Juni 2018 um 14:47 Uhr
@physicalattraction Ihre Datei befindet sich wahrscheinlich nicht am richtigen Ort. docs.djangoproject.com/en/2.0/howto/custom-management-commands beginnt mit einer Beschreibung, wo das Python-Modul für die abgelegt werden soll runserver Befehl. Vielleicht hast du auch eine andere App Auch Registrierung eines Befehls namens runserver. Versuchen Sie, Ihren Befehl umzubenennen, und prüfen Sie, ob er erkannt wird.
– Feuermurmel
27. Juni 2018 um 12:14 Uhr
Ich habe es eingefügt <app_name>/management/commands/runserver.pyaber dann Djangos Original runserver wird genutzt. Wenn ich es umbenenne in run_server.py, wird erkannt. Daran sehe ich nichts Besonderes runserver auf der Seite, auf die Sie verlinken.
– körperliche Anziehung
27. Juni 2018 um 16:51 Uhr
Die Sache ist staticfiles macht genau das was du machst empfehlen. Wenn Sie also Ihren Anweisungen folgen, wird das Bereitstellen statischer Dateien in der Entwicklung unterbrochen. Am besten importieren Sie aus django.contrib.staticfiles.management.commands.
– x-yuri
4. Januar 2019 um 2:41 Uhr
zottig
In Pycharm können Sie den Port einfach zu den Parametern hinzufügen
10270700cookie-checkdjango ändert den Standard-Runserver-Portyes
Wenn Sie den Befehl aus Ihrem Befehlszeilenverlauf ausführen, sind es noch weniger Tastenanschläge. ZB für mich ist es “runs“, und es führt automatisch den gleichen Befehl wie beim letzten Mal aus, also ist der Port usw. enthalten.
– Jonathan Hartley
20. Mai 2015 um 10:09 Uhr