django ändert den Standard-Runserver-Port

Lesezeit: 6 Minuten

Benutzer-Avatar
jonny

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.

    – Jonathan Hartley

    20. Mai 2015 um 10:09 Uhr

Erstellen Sie ein Bash-Skript mit dem folgenden:

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

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:

python manage.py runserver 7000

auf dem der Entwicklungsserver ausgeführt werden sollte http://127.0.0.1:7000/

  • 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

Benutzer-Avatar
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


Benutzer-Avatar
Krishnamoorthy Acharya

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

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

Benutzer-Avatar
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

Benutzer-Avatar
zottig

In Pycharm können Sie den Port einfach zu den Parametern hinzufügen

Geben Sie hier die Bildbeschreibung ein

1027070cookie-checkdjango ändert den Standard-Runserver-Port

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy