django изменить порт runserver по умолчанию

Я хотел бы сделать порт по умолчанию, что manage.py runserver слушает на specifiable в постороннем config.ini. Есть ли более простое исправление, чем разбор sys.argv внутри manage.py и вставка настроенного порта?

цель состоит в том, чтобы запустить ./manage.py runserver без необходимости указывать адрес и порт каждый раз, но при этом принимать аргументы из config.ini.

12 ответов


создайте скрипт bash со следующим:

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

сохраните его как runserver в том же каталоге, что и manage.py

chmod +x runserver

и запустите его как

./runserver

на самом деле самый простой способ изменить (только) порт в разработке Django server так же, как:

python manage.py runserver 7000

это должно запустить сервер разработки на http://127.0.0.1:7000/


начиная с Django 1.9, самое простое решение, которое я нашел (на основе решения Квентина Стаффорда-Фрейзера), - добавить несколько строк в manage.py динамически изменять номер порта по умолчанию перед запуском :

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)

мы создали новую команду управления "runserver", которая представляет собой тонкую оболочку вокруг стандартной, но изменяет порт по умолчанию. Грубо говоря, вы создаете management/commands/runserver.py и введите что-то вроде этого:

# 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

создать подкласс django.core.management.commands.runserver.Command и заменить default_port член. Сохраните файл как собственную команду управления, например, в разделе <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

я загружаю настройки формы порта по умолчанию здесь (который, в свою очередь, читает другие файлы конфигурации), но вы можете также прочитать его из другого файла напрямую.


все следующие команды можно изменить порт во время работы django:

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000

Это старый пост, но для тех, кому интересно:

Если вы хотите изменить номер порта по умолчанию, поэтому при запуске команды "runserver" вы начинаете с предпочтительного порта:

  1. найдите свою установку python. (у вас может быть установлено несколько pythons, и вы также можете иметь свою версию виртуальной среды, поэтому убедитесь, что вы нашли правильный)
  2. внутри папки python найдите папку site-packages. Внутри вы найдите свою установку django
  3. откройте папку django - > ядро - > управление - > команды
  4. внутри папки команд откройте runserver.py скрипт с текстовым редактором
  5. найдите поле DEFAULT_PORT. по умолчанию он равен 8000. Изменить его на что угодно DEFAULT_PORT = "8080"
  6. перезагрузите сервер: python manage.py runserver и убедитесь, что он использует ваш номер порта

Он работает с Python 2.7, но он должен работать с более новые версии Python, а также. Удачи!--2-->


Я очень опаздываю на вечеринку здесь, но если вы используете IDE, такую как PyCharm, есть опция "редактировать конфигурации" в меню "Выполнить" (Run > Edit Configuration), где вы можете указать порт по умолчанию. Это, конечно, актуально, только если вы отлаживаете / тестируете через PyCharm.


  1. создать переменную среды в вашем .bashrc и

    экспорт RUNSERVER_PORT=8010

  2. создать псевдоним

    псевдоним runserver= 'django-admin runserver $RUNSERVER_PORT'

Im с помощью zsh и virtualenvs оболочки. Я помещаю экспорт в проекты postactivate script и ASign port для каждого проекта.

workon someproject
runserver

Если вы хотите изменить конфигурации по умолчанию, выполните следующие действия:

  1. открыть терминал, введите команду

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
    
  2. теперь открыть runserver.py файл в Редакторе nano как суперпользователь

     $ sudo nano runserver.py
    
  3. найдите переменную "default_port", тогда вы увидите, что порт по умолчанию нет "8000". Теперь вы можете изменить его на что угодно.

  4. теперь выйдите и сохраните файл с помощью " CTRL + X и Y to сохраните файл"

Примечание: Замените .x с вашей полезной версией python


в Pycharm вы можете просто добавить порт к параметрам

enter image description here


я боролся с той же проблемой и нашел одно решение. Думаю, это может тебе помочь. при запуске python manage.py runserver, Он будет принимать 127.0.0.1 в качестве ip-адреса по умолчанию и 8000 в качестве номера порта по умолчанию, который может быть настроен в вашей среде python. В настройках python перейдите в <your python env>\Lib\site-packages\django\core\management\commands\runserver.py и установить 1. default_port = '<your_port>'
2. найдите это под ручкой def и установите
if not options.get('addrport'): self.addr = '0.0.0.0' self.port = self.default_port

теперь, если вы запустите "python manage.py runserver" он будет работать по умолчанию на " 0.0.0.0:

наслаждайтесь кодирования .....