2016-10-04 3 views
1

장고 응용 프로그램을 만들 때 내 웹 사이트를 테스트하기 위해 runserver 명령을 사용 하겠지만 배포 할 때 웹 사이트를 www.test.com/으로 게시한다고 가정 해 봅시다. 장고.서브 디렉토리의 Django

내 IIS는 "django"라는 기본 웹 사이트에서 응용 프로그램을 사용하여 구성합니다.

나는 잘 작동하지만 장고 내 URL 스키마를 인식하지 못합니다 모든 것을, 즉 것으로 기대하고있어 한 다음

urlpatterns = [ 
    # Examples: 
    url(r'^$', app.views.home, name='home'), 
    url(r'^contact$', app.views.contact, name='contact'), 
    url(r'^about', app.views.about, name='about'), 
] 

이 경우

, 나는 이런 내 urlpatterns을 수정해야 www.test.com/django를 통해 신청서를 제출하려면 :

urlpatterns = [ 
    url(r'^(?i)django/', include([ #Application name 
     # Examples: 
     url(r'^$', app.views.home, name='home'), 
     url(r'^contact$', app.views.contact, name='contact'), 
     url(r'^about', app.views.about, name='about'), 
    ])), 
] 

좋은 접근 방법입니까? 작동하지만 나는이 솔루션의 품질에 대해 확신하지 못합니다.

답변

0

이 문제를 해결하는 가장 좋은 방법은 웹 서버가 SCRIPT_NAME wsgi 변수를 전달하도록하는 것입니다. Django는 URL 구성을 변경할 필요없이 URL을 생성 할 때 자동으로이 변수를 접두어로 사용합니다. 저는 IIS에 익숙하지 않으므로 어떻게하는지 설명 할 수는 없습니다. 스크립트 이름은 설정에서 구성되는 것이 아니라 장고에 전달되므로 코드가 WSGI 응용 프로그램의 실제 탑재 지점에 완전히 독립적 인 이점이 있습니다.

또는 FORCE_SCRIPT_NAME 설정을 /django/으로 설정할 수 있습니다.

+0

좋아, 지금 테스트, 그래서, 디버그에서 내가 현재 이름으로 포함해야합니까? 왜냐하면 그렇지 않다면 내 로컬 디버그 서버에서 서브 디렉토리를 테스트 할 수 없기 때문입니다. 그러나 FORCE_SCRIPT_NAME을 (를) 사용하여 URL 보간 (URL 템플릿 태그 사용이 예상대로 작동합니다!)! – VirtApp

+0

@VirtApp 개발 설정이 아닌 프로덕션 설정에서'FORCE_SCRIPT_NAME = '/ django /''만 설정해야합니다. – knbk

+0

알 겠어,하지만 내 개발 서버에서 그 디렉토리를 시뮬레이션해야하므로 디버그 설정이 맞는지 아닌지를 조건부 디버깅 설정에 추가해야합니까? : urlpatterns2 = patterns ('', URL (r '^ $', 'yourapp.views.home', name = 'Home'), url (r '^ admin /', 포함 (admin.site.urls)) urlpatterns = 패턴 ('', url (r '^ django /', include (urlpatterns2)), )' – VirtApp

관련 문제