문제

나머지 사이트와 다른 하위 도메인에 대한 전문 RSS 피드를 제공하고 싶습니다.

사이트 프레임 워크를 사용하여 다른 urls.py 및 settings.py 파일을 사용할 수 있습니까? 단일 장고 인스턴스 내에서. 또는 두 개의 Apache 위치를 설정하고 Apache Conf.

두 개의 urls.py 파일을 설정 해야하는 이유는 중복 콘텐츠를 피하기 때문입니다. 나는 기본 사이트를 Rss.example.com에서 사용할 수 있기를 원하지 않으며 example.com에서 특수 피드에 액세스 할 수있는 것을 원하지 않습니다.

단일 Django 인스턴스에서 그들을 제공하는 것은 메모리가 제한된 공유 호스팅을하고 있기 때문에 이상적이며 RSS를 제공하는 인스턴스를 열어 두는 폐기물처럼 보입니다.

편집하다: urls.py 파일이 나오는 여러 인스턴스가 가장 쉬운 일이라고 결론지었습니다. 그러나이 기사가 단일 인스턴스를 사용하여 수행하는 방법을 설명했습니다.

http://effbot.org/zone/django-multihost.htm

해결책: Django Tupperware

단일 장고 인스턴스에서 사이트의 여러 사본을 실행하기위한 프레임 워크를 작성하게되었습니다.

기본 아이디어는 SITE_ID 각 요청에 대해 즉시 설정하고 데이터베이스에서 대체 설정을로드합니다. 이를 도메인과 사용에 따라 수행합니다 SITE_ID = 1 기본적으로 (아무것도 찾을 수없는 경우)

settings.py 파일의 모든 설정은 현재 사이트의 데이터베이스에 저장된 설정에 의해 무시되는 기본값으로 작동합니다.

그것은 꽤 잘 작동합니다 :) 그리고 그것은 생산 중입니다. http://rootbuzz.com

도움이 되었습니까?

해결책

재고 django를 사용하면 독특해야합니다 settings.py 각 사이트에 대해 ... site_id가 정의되어 있기 때문에 settings.py 이 요청을 처리하는 사이트의 열쇠입니다.

다시 말해, site_id는 인스턴스의 전역이므로 각 사이트마다 인스턴스가 필요합니다.

당신은 일반적인 것을 가질 수 있습니다 urls.py 당신이 같은 것을 사용하지 못하게하는 것이 없기 때문에 원한다면 ROOT_URLCONF 모든 사이트에서 settings.py 파일 ... 또는 각 사이트마다 다른 파일을 가질 수 있습니다. 이 경우 공통 URL에 대한 자신을 반복하지 않도록 하위 URL을 포함하려고합니다.

단일 인스턴스에서 제공 할 수있는 두 가지 방법이 있습니다.

  1. Apache +를 사용하십시오 mod_wsgi 그리고 사용하십시오 WSGIAPPLICATIONGROUP 및/또는 wsgiprocessgroup 지침. 나는 이것을 전에 필요로하지 않았으므로 이것이 원하는 방식으로 작동 할 것이라고 확신 할 수는 없지만 데몬 모드에서 mod_wsgi를 사용하여 메모리 발자국을 크게 향상시킬 수 있습니다.

  2. Django Middleware를 사용하여 요청 호스트 이름을 기반으로 URL을 거부/허용 할 수 있습니다 ( httprequest.get_host () Django 문서에서). 그 문제에 대해서는 약간의 성능이 적용 되더라도 들어오는 호스트를 확인하는 모든 견해에 데코레이터를 넣을 수 있습니다.

다른 팁

참고 - 나는이 문제에 도움이 될 수있는 django -dynamicsites를 발표했다. https://bitbucket.org/uysrc/django-dynamicsites/src

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top