2017-03-17 3 views
0

예를 들어 웹 사이트 (또는 앱) 제목과 같은 사이트 전체 또는 앱 전체 변수를 설정하는 방법을 찾고 있는데, 내 템플릿 (예 : 내 머리글)에서 사용할 것입니다. 나는 WordPress 'bloginfo()을 염두에두고 있습니다.Django - 템플릿에서 사용하기 위해 사이트 전체 변수 설정 및 사용

이상적으로 사이트 또는 앱 수준에서 모든 유형의 속성을 정의 할 수 있기를 바랍니다. 특정 응용 프로그램의 경우, 예를 들어, 내가 가진 것 :

응용 프로그램

--attribute1 (예 : 제목)

--attribute2 (예 : 연락처 이메일)

--Model1

---- AttributeX

---- AttributeY

- --- ...

"attribute1"이 내 앱에 고유하다는 것을 의미합니다. 그런 다음 템플릿의 attribute1 값을 사용하는 방법이 필요합니다. 제 질문이 분명하기를 바랍니다.

답변

1

사이트 전체 또는 앱 전체 변수를 항상 사용합니다. context processors.

앱 내부에 context_processors.py이라는 별개의 파일을 만듭니다. (이 이름을 지칭하는 것은 필수 사항이 아니며, 규칙을위한 것임)이 파일은 request 매개 변수를 허용하는 하나 이상의 함수를 정의해야합니다. 사전. 그런

뭔가 : 이제

# yourapp/context_processors.py 

def static_vars(request): 
    return = { 
     'var1': 'Hello', 
     'var2': 'World', 
    } 

당신이 {{ var1 }}으로 템플릿의 변수를 액세스하기 전에,이 같은 TEMPLATES 설정으로이 기능을 통과해야합니다 :

# settings.py 

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [ 
     # dirs here 
    ], 
    'OPTIONS': { 
     'context_processors': [ 
      # some other context processors here and ... 
      'yourapp.context_processors.static_vars', 
     ], 
     'loaders': [ 
      # loaders here 
     ], 
    }, 
}, 

]

이제 모든 템플릿에서 노출되는 static_vars 변수를 사용할 수 있습니다.

+0

관리자에게 연결하는 방법이 있습니까? 예를 들어 사이트의 관리자가 웹 사이트의 제목을 변경하거나 부제목의 오타를 수정할 수있는 것은 당연합니다. – GuitarExtended

+0

이미 "구부려 진"상태입니다. 그것도 관리자에서 작동합니다! –

+0

나는 당신이 제안한 것을했습니다. 하지만 관리자에서는 이러한 정적 변수를 볼 수 없습니다. admin.py에 등록해야합니까? 이러한 멍청한 의견에 대해 사과드립니다. 컨텍스트 프로세서에 대해 알고 있습니다. – GuitarExtended

1

템플릿에서 이러한 변수를 사용하려면 context processors을 봐야합니다. 가장 간단한 해결책은 앱이나 프로젝트에 context_processors.py을 추가 한 다음이 파일의 경로를 설정의 컨텍스트 프로세서 목록에 추가하는 것입니다.