Django 템플릿 사용자 정의contextprocessors
1.8.4
context를 사용자 정의하는 이유processors
블로그를 하는 과정에서 조회 순위, 평론 순위, 라벨, 글 압축파일, 우정 링크 등 내용은 모든 표시 페이지에 표시해야 한다.만약views의 처리 함수에서 상기 정보를 되돌려준다면, 이것은 심각한 코드 군더더기를 초래할 것이다.따라서 모든 템플릿 보기로 설정하면 접근할 수 있습니다. 이것은 전역 변수와 같습니다.
지식상의 준비
Django에서 context 설정 가능프로세스 ors, 모든 템플릿 보기가 렌더링될 때 대응하는 Context 값을 전달합니다.
단계
1. 전역 Context 반환 함수
myApp에서 context 만들기processors.py 파일을 만들고 함수를 만듭니다.
def global_setting(request):
#
archive_list = Article.objects.distinct_date()
.......
return locals()
2. settings를 수정합니다.py
TEMPLATES의 contextprocessors 목록에 사용자 정의 글로벌 추가setting 함수, 추가된 후 템플릿 보기를 렌더링할 때마다 함수 글로벌setting의 해당 Context가 템플릿 뷰로 전달됩니다.다른 것은 context 를 만들지 않습니다.processors.py 파일도 가능합니다. 사용자 정의 함수 경로를context 에 추가하면 됩니다.processors면 되는데 그렇게 하면 관리하기 불편해서 추천하지 않아요.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'blog/templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
#
'blog.context_processors.global_setting',
],
},
},
]
3. 뷰 로직
renderto_response() 렌더링 시 context 를 지정해야 합니다.instance=context_instance=RequestContext(request), 전역적인 Context를 지정하지 않으면 상대적인 템플릿 보기에 전달되지 않으며,render()를 통해 렌더링하면 context 를 지정하지 않아도 됩니다.instance
def index(request):
try:
# ,
article_list = get_page(request, Article.objects.all(), number=10)
except Exception as e:
logger.error(e)
return render(request, 'index.html', locals())
참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.