Django
컨텍스트 프로세서
수색…
비고
컨텍스트 프로세서를 사용하여 템플릿의 어느 곳에서나 액세스 할 수있는 변수를 추가하십시오.
함수를 지정하거나 반환하는 함수 dict
원하는 변수들, 그 다음에 그 기능을 추가 TEMPLATE_CONTEXT_PROCESSORS
.
컨텍스트 프로세서를 사용하여 설정에 액세스합니다. 템플릿의 .DEBUG
myapp/context_processors.py
.
from django.conf import settings
def debug(request):
return {'DEBUG': settings.DEBUG}
settings.py
:
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'myapp.context_processors.debug',
],
},
},
]
또는 <1.9 버전의 경우 :
TEMPLATE_CONTEXT_PROCESSORS = (
...
'myapp.context_processors.debug',
)
그런 다음 내 템플릿에서 간단하게 :
{% if DEBUG %} .header { background:#f00; } {% endif %}
{{ DEBUG }}
컨텍스트 프로세서를 사용하여 모든 템플릿의 가장 최근 블로그 항목에 액세스합니다.
models.py
파일에 정의 된 Post
라는 모델을 블로그 게시물이 있고 date_published
필드가 있다고 date_published
합니다.
1 단계 : 컨텍스트 프로세서 작성
응용 프로그램 디렉토리에 context_processors.py
라는 파일을 만들거나 추가하십시오.
from myapp.models import Post
def recent_blog_posts(request):
return {'recent_posts':Post.objects.order_by('-date_published')[0:3],} # Can change numbers for more/fewer posts
2 단계 : 설정 파일에 컨텍스트 프로세서 추가
TEMPLATES
변수의 settings.py
파일에 새 컨텍스트 프로세서를 추가했는지 확인하십시오.
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'myapp.context_processors.recent_blog_posts',
],
},
},
]
(장고 버전 1.9 이전에서는 TEMPLATE_CONTEXT_PROCESSORS
변수를 사용하여 settings.py
에서 직접 settings.py
.)
3 단계 : 템플릿에서 컨텍스트 프로세서 사용
더 이상 개인적인 의견을 통해 최근 블로그 항목을 전달할 필요가 없습니다! 모든 템플릿에서 recent_blog_posts
를 사용하기 recent_blog_posts
됩니다.
예를 들어, home.html
에서 최근 게시물에 대한 링크가있는 사이드 바를 만들 수 있습니다.
<div class="blog_post_sidebar">
{% for post in recent_blog_posts %}
<div class="post">
<a href="{{post.get_absolute_url}}">{{post.title}}</a>
</div>
{% endfor %}
</div>
또는 blog.html
에서 각 게시물에 대한 자세한 표시를 만들 수 있습니다.
<div class="content">
{% for post in recent_blog_posts %}
<div class="post_detail">
<h2>{{post.title}}</h2>
<p>Published on {{post.date_published}}</p>
<p class="author">Written by: {{post.author}}</p>
<p><a href="{{post.get_absolute_url}}">Permalink</a></p>
<p class="post_body">{{post.body}}</p>
</div>
{% endfor %}
</div>
템플릿 확장하기
컨텍스트 프로세서를 사용하여 그룹 구성원 (또는 모든 쿼리 / 논리)을 기반으로 템플릿을 결정합니다. 이를 통해 일반 / 일반 사용자는 하나의 템플릿과 특수 그룹을 가져와 다른 템플릿을 얻을 수 있습니다.
myapp / context_processors.py
def template_selection(request):
site_template = 'template_public.html'
if request.user.is_authenticated():
if request.user.groups.filter(name="some_group_name").exists():
site_template = 'template_new.html'
return {
'site_template': site_template,
}
컨텍스트 프로세서를 설정에 추가하십시오.
템플릿에서 컨텍스트 프로세서에 정의 된 변수를 사용합니다.
{% extends site_template %}