django 변경 기본 runserver 포트


129

manage.py runserver외부에서 지정 가능한 수신 대기 하는 기본 포트를 만들고 싶습니다 config.ini. sys.argv내부를 구문 분석 manage.py하고 구성된 포트를 삽입하는 것보다 쉬운 수정이 있습니까?

목표는 ./manage.py runserver매번 주소와 포트를 지정할 필요없이 config.ini.


명령 줄 기록에서 명령을 실행하면 키 입력이 훨씬 적습니다. 예를 들어 "<ctrl-r> runs <enter>"이고 지난번과 동일한 명령을 자동으로 실행하므로 포트 등이 포함됩니다.
Jonathan Hartley

답변:


176

다음을 사용하여 bash 스크립트를 만듭니다.

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

manage.py와 동일한 디렉토리에 runserver로 저장하십시오.

chmod +x runserver

다음과 같이 실행하십시오.

./runserver

또는 사용자 지정 관리 명령을 추가 할 생각입니다.
jonny

프로그래밍 방식으로 개발 서버를 실행할 수 없으므로 .NET Framework와 같은 것을 사용하여 셸을 호출하지 않으면 사용자 지정 명령이 작동하지 않습니다 call. 이 솔루션이 효과가 있다면 해결됨으로 표시하십시오.
Pablo Albornoz

나는 실제로 supervisor이것을 위해 사용 하기 시작했고 , 그것은 관리하기 더 쉽게 만듭니다. :-) 그러나 당신은 아마도 전용 runserver스크립트를 작성하는 것 외에 가장 깨끗한 솔루션 일 것입니다 .
jonny

Supervisor는 개발 환경을 실행하는 데 권장하지 않는 좋은 솔루션입니다. 무엇보다도 터미널에서 서버 출력을 갖는 이점을 잃게됩니다. 감독자를 정말로 사용하고 싶다면 Gunicorn과 같은 완전한 기능을 갖춘 WSGI 서버와 함께 사용하는 것이 좋습니다. ... 당신의 프로덕션 서버와 개발 서버를 실행하지 마십시오
파블로 알 보르 노즈

이것은 유용하지만 한 번에 여러 프로젝트를 처리 할 때 유용하지는 않습니다. 각 개별 프로젝트에 사용할 포트를 지정하는 아래 답변을 수락했을 것입니다. 그냥 내 의견이야.

105

실제로 개발 Django 서버에서 포트를 변경하는 가장 쉬운 방법은 다음과 같습니다.

python manage.py runserver 7000

http://127.0.0.1:7000/ 에서 개발 서버를 실행해야합니다.


2
이 대답은 기본 포트를 변경하는 것이 아니라 포트를 변경하는 것입니다.
physicalattraction

42

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)

원래 질문에 정확히 대답하지 않고 들여 쓰기가 엉망이되었지만 (코드는 "import django"에서 아래로 들여 쓰기해야 함)이 대답은 완전히 독립적이고 입력 된 내용을 변경할 필요가 없기 때문에 선호합니다. 명령 줄에서.
PurpleDiane 2016-07-17

1
@PurpleDiane 들여 쓰기가 고정되어 있습니다.
Flimm

내 manage.py 정말처럼 보이지 않는, 내가 장고 이후 변경 같아요
NaturalBornCamper

6
현재 (2.0.3부터) from django.core.management.commands.runserver import Command as runserver; runserver.default_port = "8080manage.py 에 다음 을 추가 할 수 있습니다 . 다음을 사용하여 청취 주소를 변경할 수도 있습니다.runserver.default_addr
Vargas

29

다음 명령은 모두 django를 실행하는 동안 포트를 변경할 수 있습니다.

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000

1
"목표는 주소와 포트마다 시간을 지정하지 않고 ./manage.py의 runserver를 실행하는 것입니다"
criptych 모니카의 약자

11

멤버 의 하위 클래스를 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 1.8.14는 자체 생성 파일을 인식하지 못합니다 runserver.py. 어딘가에 등록해야합니까?
physicalattraction

@physicalattraction 파일이 올바른 위치에 없을 수 있습니다. docs.djangoproject.com/en/2.0/howto/custom-management-commandsrunserver명령에 대한 Python 모듈을 배치 할 위치에 대한 설명으로 시작합니다 . 또한 어쩌면 당신은 다른 응용 프로그램은이 또한 라는 명령을 등록 runserver. 명령 이름을 바꾸고 인식되는지 확인하십시오.
Feuermurmel

1
에 넣었 <app_name>/management/commands/runserver.py지만 Django의 원본 runserver이 사용됩니다. 로 이름을 바꾸면 run_server.py인식됩니다. runserver링크 한 페이지에 특별한 내용이 없습니다 .
physicalattraction

문제는 staticfiles정확히 당신이 제안한 것을하는 것 입니다. 따라서 지침을 따르면 개발 중에 정적 파일을 제공하지 못합니다. 에서 가져 오는 것이 가장 좋습니다 django.contrib.staticfiles.management.commands.
X-유리

8

우리는 새로운 '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

2

Pycharm에서는 매개 변수에 포트를 간단히 추가 할 수 있습니다.

여기에 이미지 설명 입력


1

여기서 파티에 너무 늦었지만 PyCharm과 같은 IDE를 사용하는 경우 '실행'메뉴 (실행> 구성 편집)의 '구성 편집'에 기본 포트를 지정할 수있는 옵션이 있습니다. 물론 이것은 PyCharm을 통해 디버깅 / 테스트하는 경우에만 관련이 있습니다.


1

기본 구성을 변경하려면 다음 단계를 따르십시오.

  1. 터미널 유형 열기 명령

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
  2. 이제 나노 편집기에서 수퍼 유저로 runserver.py 파일을 엽니 다.

     $ sudo nano runserver.py
  3. 'default_port'변수를 찾으면 기본 포트 번호가 '8000'인 것을 볼 수 있습니다. 이제 원하는대로 변경할 수 있습니다.

  4. 이제 종료하고 "파일을 저장하려면 CTRL + X 및 Y"를 사용하여 파일을 저장하십시오.

참고 : <2/3> .x를 사용 가능한 Python 버전으로 바꿉니다.


0
  1. .bashrc에 환경 변수 만들기

    내보내기 RUNSERVER_PORT = 8010

  2. 별칭 만들기

    alias runserver = 'django-admin runserver $ RUNSERVER_PORT'

zsh 및 virtualenvs 래퍼를 사용하고 있습니다. 모든 프로젝트에 대해 프로젝트 postactivate 스크립트 및 서명 포트에 내보내기를 넣습니다.

workon someproject
runserver

-2

이것은 오래된 게시물이지만 관심있는 사람들을 위해 :

기본 포트 번호를 변경하여 "runserver"명령을 실행할 때 원하는 포트로 시작하려면 다음을 수행하십시오.

  1. Python 설치를 찾으십시오. (여러 개의 파이썬을 설치할 수 있으며 가상 환경 버전도 가질 수 있으므로 올바른 버전을 찾도록하십시오)
  2. python 폴더 내에서 site-packages 폴더를 찾으십시오. 그 안에 장고 설치가 있습니다.
  3. django 폴더 열기-> 코어-> 관리-> 명령
  4. 명령 폴더 내에서 텍스트 편집기로 runserver.py 스크립트를 엽니 다.
  5. DEFAULT_PORT 필드를 찾으십시오. 기본적으로 8000과 같습니다. 원하는대로 변경 DEFAULT_PORT = "8080"
  6. 서버를 다시 시작하십시오 : python manage.py runserver 및 설정된 포트 번호를 사용하는지 확인하십시오.

python 2.7에서 작동하지만 최신 버전의 python에서도 작동합니다. 행운을 빕니다


11
이것은 여기에서 모두 최악의 제안입니다. IMHO, 배포판에서 파일을 편집하는 것은 결코 좋은 생각이 아니며 변경 사항이 VCS에 의해 추적되지 않고 쉽게 덮어 쓰기되기 때문에 혼란을 야기합니다.
Feuermurmel

사이트 패키지에서 Django 모듈을 편집하는 것은 권장되지 않습니다. 새 버전으로 업데이트 할 수 있습니다. 또한 모든 Django 앱에 영향을 미칩니다.
Sathindu Kavneth

-3

나는 같은 문제로 고심하고 있었고 하나의 해결책을 찾았습니다. 나는 그것이 당신을 도울 수 있다고 생각합니다. 를 실행할 때 python manage.py runserver기본 IP 주소로 127.0.0.1을 사용하고 Python 환경에서 구성 할 수있는 기본 포트 번호로 8000을 사용합니다. 파이썬 설정에서 1로 이동하여 <your python env>\Lib\site-packages\django\core\management\commands\runserver.py설정하십시오. 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에서 실행됩니다.

코딩 즐기기 .....


3
종속 패키지의 소스를 수정하는 것은 나쁜 습관으로 간주됩니다. 업데이트 / 다시 설치시 변경 사항이 손실 될 수 있습니다.
arogachev

맞습니다 @arogachev, 기본 포트와 호스트를 만들 수있는 옵션입니다. 그러나 종속 패키지를 수정하는 것은 좋은 습관이 아닙니다. 명령 프롬프트에서 서버를 실행할 때 IP와 포트를 설정할 수도 있습니다.
Amrendra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.