Ответ 1
создайте bash script со следующим:
#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
сохраните его как runerver в том же каталоге, что и manage.py
chmod +x runserver
и запустите его как
./runserver
Я хотел бы сделать порт по умолчанию, который manage.py runserver
прослушивает по определенному в постороннем config.ini
. Есть ли более легкое исправление, чем синтаксический анализ sys.argv
внутри manage.py
и вставка настроенного порта?
Цель состоит в том, чтобы запустить ./manage.py runserver
без необходимости указывать адрес и порт каждый раз, но при этом он принимает аргументы из config.ini
.
создайте bash script со следующим:
#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
сохраните его как runerver в том же каталоге, что и manage.py
chmod +x runserver
и запустите его как
./runserver
Как и в Django 1.9, простейшее решение, которое я нашел (на основе решения Quentin Stafford-Fraser), заключается в добавлении нескольких строк в manage.py
, которые динамически изменяют номер порта по умолчанию перед вызовом команды runserver
:
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)
На самом деле самый простой способ изменения (только) порта в разработке Django-сервера:
python manage.py runserver 7000
который должен запустить сервер разработки на http://127.0.0.1:7000/
Мы создали новую команду управления "runerver", которая представляет собой тонкую оболочку вокруг стандартного, но изменяет порт по умолчанию. Грубо, вы создаете 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
Это старый пост, но для тех, кто заинтересован:
Если вы хотите изменить номер порта по умолчанию, поэтому при запуске команды "runningerver" вы начинаете с предпочтительного порта:
DEFAULT_PORT = "8080"
Он работает с python 2.7, но он также должен работать с более новыми версиями python. Удачи.
Я очень опаздываю на вечеринку здесь, но если вы используете IDE, например PyCharm, там есть опция "Редактировать конфигурации" в меню "Выполнить" ( "Выполнить" > "Редактировать конфигурации" ), где вы можете указать порт по умолчанию. Это, конечно, актуально, только если вы отлаживаете/тестируете через PyCharm.
Создайте подкласс 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
Я загружаю настройки формы порта по умолчанию (которые, в свою очередь, читают другие файлы конфигурации), но вы можете просто прочитать его из другого файла напрямую.
Создайте переменную окружения в вашем .bashrc
export RUNSERVER_PORT = 8010
Создать псевдоним
alias runningerver = 'django-admin runningerver $RUNSERVER_PORT'
Im использует zsh и virtualenvs wrapper. Я добавляю экспорт в проекты postactivate script и порт asign для каждого проекта.
workon someproject
runserver
Я боролся с той же проблемой и нашел одно решение. Думаю, это может вам помочь.
при запуске python manage.py runserver
в качестве IP-адреса по умолчанию будет 127.0.0.1 и 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 runningerver", он будет запущен по умолчанию на "0.0.0.0:
Наслаждайтесь кодированием.....