2009-09-28 3 views
1

기존 Django 사이트가 있으며 사용중인 템플릿이 매우 다양합니다. 우리는 시각적 디자인을 자신의 웹 사이트와 조화시키고 자하는 파트너 중 하나가 사용할 수 있도록 사이트의 사용자 정의 스킨 버전을 제공하기로 동의했습니다. 이것은 주요 사이트의 기능 및 데이터의 하위 집합을 사용하여 별도의 URL (Google에서 결정할 수 있음)에 있습니다.조건부로 기존 사이트를 스킨링하는 방법 (파트너 브랜딩 용)

제 질문은 : 많은 코드 또는 템플릿을 복제하지 않고 사이트에 reskin 기능을 추가하는 가장 좋은 방법은 무엇입니까?

  • URL : : 제가보기에는

    함께 작동 할 몇 가지 요소가 필요, 사이트의 파트너 브랜드 버전을 가리키는 URL을 다른 세트를 가지고 있지만은 사이트가 페이지를 작성하는 데 필요한 모든 표준 경로 정보를 포함 할 수 있습니다.

  • 템플릿은 '확장': 템플릿과 같은 다른 기반을 확장해야 할 필요가 대신

  • 보기 로직을 ​​{%가 'base.html'% 확장} {%가 '와 partner.html'%을 확장} :이 파트너 브랜드 버전 때 뷰 알고, 그래서 그들은 비즈니스 로직을 변경할 수 있도록 할 필요 적절하게

내 생각은 지금까지 다음, 하위 도메인에 파트너 사이트를 넣어 미들웨어를 사용하는 것입니다

도메인 이름을 구문 분석하고 'partner'및 'partner_template'변수를 요청 객체에 추가하십시오. 따라서 비즈니스 로직을 처리하기 위해 뷰 내 request.partner에 액세스 할 수 있습니다. (. this answer에 따르면, 다른 모든 템플릿 태그와 같은 변수를한다 '확장')이

{% extends request.partner_template|default:'base.html' %} 

윌이 작품이 제대로 : 그럼, 다음과 같이 내 모든 템플릿을 편집해야? 더 좋은 방법이 있습니까?

답변

0

settings.py을 다른 사이트에 사용하는 경우 다른 템플릿로드 디렉토리를 지정할 수 있습니다. (어떤 당신의 껍질을 벗기지 않은 페이지에 디폴트일지도 모른다.)

개인적으로 나는 동일한 뷰 코드에서 해킹과 같은 냄새가 나는 것으로 개인적으로 확신하지 않는다 - 광범위한 조건부 컴파일이 C와 같다.

그래서 요약 해주세요. 사용 django.contrib.sites

  1. 다른 settings.py
  2. 이 동일한 데이터, 아니면 그냥 다른 CSS/템플릿을 사용하여 새 응용 프로그램/웹 사이트에 얼마나 많은 명확한 아이디어를 가져옵니다.
관련 문제