web-dev-qa-db-fra.com

django change le port du serveur d'exécution par défaut

Je voudrais faire le port par défaut que manage.py runserver écoute spécifiable dans un config.ini étranger. Existe-t-il une solution plus simple que d'analyser sys.argv à l'intérieur de manage.py et d'insérer le port configuré?

Le but est d'exécuter ./manage.py runserver sans avoir à spécifier l'adresse et le port à chaque fois, mais de prendre les arguments du config.ini.

91
jonny

créez un script bash avec les éléments suivants:

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

enregistrez-le en tant que serveur d'exécution dans le même répertoire que manage.py

chmod +x runserver

et l'exécuter comme

./runserver
138
Pablo Albornoz

En fait, le moyen le plus simple de changer (uniquement) un port en développement Django serveur est le suivant:

python manage.py runserver 7000

cela devrait exécuter le serveur de développement sur http://127.0.0.1:7000/

71
Qback

Depuis Django 1.9, la solution la plus simple que j'ai trouvée (basée sur la solution de Quentin Stafford-Fraser) consiste à ajouter quelques lignes à manage.py qui modifie dynamiquement le numéro de port par défaut avant d'appeler le runserver commande:

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)
35
BillyBBone

Toutes les commandes suivantes permettent de modifier le port lors de l'exécution de Django:

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000
19

Créez une sous-classe de Django.core.management.commands.runserver.Command et écrasez le membre default_port. Enregistrez le fichier en tant que commande de gestion de votre choix, par exemple. sous <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

Je charge les paramètres de formulaire de port par défaut ici (qui lit à leur tour d'autres fichiers de configuration), mais vous pouvez tout aussi bien le lire directement dans un autre fichier.

8
Feuermurmel

Nous avons créé une nouvelle commande de gestion 'runserver' qui est un wrapper léger autour du standard mais qui modifie le port par défaut. En gros, vous créez management/commands/runserver.py et mettez quelque chose comme ceci:

# 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

Dans Pycharm, vous pouvez simplement ajouter le port aux paramètres

enter image description here

1
chaggy

Je suis très en retard pour la fête ici, mais si vous utilisez un IDE comme PyCharm, l'option 'Editer les configurations' du menu 'Exécuter' (Exécuter> Editer les configurations) vous permet de spécifier un paramètre. port par défaut. Ceci n’est bien sûr pertinent que si vous effectuez un débogage/test via PyCharm.

1
Smitty
  1. Créer une variable d'environnement dans votre fichier .bashrc

    export RUNSERVER_PORT = 8010

  2. Créer un alias

    alias runserver = 'Django-admin runserver $ RUNSERVER_PORT'

J'utilise zsh et wrapper virtualenvs. Je mets l'exportation dans les projets postactivate script et assigne le port pour chaque projet.

workon someproject
runserver
0
Pavel1114

Si vous souhaitez modifier les configurations par défaut, procédez comme suit:

  1. Commande de type de terminal ouvert

     $ /usr/local/lib/python<2/3>.x/dist-packages/Django/core/management/commands
    
  2. Ouvrez maintenant le fichier runserver.py dans l'éditeur nano en tant que superutilisateur

     $ Sudo nano runserver.py
    
  3. recherchez la variable 'default_port', le numéro de port par défaut est '8000'. Maintenant, vous pouvez le changer en ce que vous voulez.

  4. Maintenant, quittez et enregistrez le fichier en utilisant "CTRL + X et Y pour enregistrer le fichier"

Remarque: remplacez <2/3> .x par votre version utilisable de python.

0
rhoitjadhav

Ceci est un ancien post mais pour ceux qui sont intéressés:

Si vous souhaitez modifier le numéro de port par défaut, procédez comme suit lorsque vous exécutez la commande "runserver":

  1. Trouvez votre installation python. (vous pouvez avoir plusieurs pythons installés et votre version d'environnement virtuel aussi, alors assurez-vous de trouver la bonne)
  2. Dans le dossier python, localisez le dossier site-packages. À l'intérieur de celui-ci, vous trouverez votre installation Django
  3. Ouvrez les commandes Django _ dossier-> core -> management ->
  4. Dans le dossier des commandes, ouvrez le script runserver.py avec un éditeur de texte.
  5. Recherchez le champ DEFAULT_PORT. il est égal à 8000 par défaut. Changez-le comme vous voulez DEFAULT_PORT = "8080"
  6. Redémarrez votre serveur: python manage.py runserver et vérifiez qu'il utilise le numéro de port que vous avez défini.

Cela fonctionne avec python 2.7, mais il devrait également fonctionner avec les versions plus récentes de python. Bonne chance

0
Daniel Kiss