2011-02-23 2 views
8

이것은 매우 단순해야합니다. 나는이 템플릿을 연결하기위한 템플릿에서 성공적으로이 컨텍스트를 성공적으로 사용했음을 확신합니다. 내 믿음은 이것이 어떻게 든 또는 다른 RequestContext 인스턴스에 내장되었다는 것이다.Django {{site}} 템플릿 컨텍스트가 작동하지 않습니까?

내 설정 파일의 SITE_ID 레코드가 정확합니다. 내 모든보기에 대한 RequestContext 인스턴스를 포함하고 난이 경우에 관련이있을 수 있습니다 contrib.auth 애플 리케이션을 포함 시켰습니다.

{{site}} 컨텍스트가 어떻게 구축되었거나 인스턴스의 Sites 개체를 쿼리해야합니까?

덕분에 모든 브랜든

답변

24

장고 명시하기 위해 노력하고, 그래서 그것 자체로 어떤 상황을 설정 한 것 같지는 않다. settings.CONTEXT_PROCESSORS에는 {{site}}을 설정하는 컨텍스트 프로세서가 있어야합니다. django.core.context_processorsdjango.contrib.sites을 확인했으며 site을 설정하는 프로세서가 없습니다. 그래서 당신은 아마도 그렇게하는 타사 컨텍스트 프로세서를 가졌을 것입니다.

이 쓰는 상황에 맞는 프로세서 매우 쉽습니다 :

myproject/context_processors.py: 

    from django.contrib.sites.models import Site 

    def site(request): 
     return { 
      'site': Site.objects.get_current() 
     } 

myproject/settings.py: 

    CONTEXT_PROCESSORS += ['myproject.context_processors.site'] 
이 늘 get_current은()에서 전역 설정입니다 SITE_ID를 사용하는 사용자 정의 컨텍스트 프로세서를

def site(request): 
    return {'site': Site.objects.get_current()} 

주를 만들 상처

+0

Skimantas에 감사드립니다. 제 질문에 분명히 대답합니다. 제 3 자 컨텍스트 프로세서를 사용하지 않았기 때문에 사이트를 사용할 수있는 이전 기능은 여전히 ​​수수께끼입니다. 나는 그것을 조사 할 것이다. 그래도 내 전반적인 질문에 대한 훌륭한 대답. – Ben

2

프로젝트 (settings.py에 정의 됨). 다중 사이트를 지원하려면 액세스중인 현재 사이트에 따라 값을 변경하려면 SITE_ID 변수가 필요합니다.

Here은 효과를 낼 수있는 멋진 스 니펫입니다.

관련 문제