수색…


비고

컨텍스트 프로세서를 사용하여 템플릿의 어느 곳에서나 액세스 할 수있는 변수를 추가하십시오.

함수를 지정하거나 반환하는 함수 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 %}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow