Рубрики
Без рубрики

Индивидуальные контекстные процессоры в Джангу.

Что такое необходимость контекстных процессоров? 😇 Иногда вы хотите сделать переменную доступную … Помечено Django, учебник, Python.

Что такое необходимость контекстных процессоров? 😇

Иногда вы хотите сделать Переменная Доступны для всех Шаблоны в проекте.

Два способа доступа к переменной во всех шаблонах:

1. Трудный способ: Предоставляя ту же переменную в контексте каждого представления. 😐

2. Легкий способ: Создание пользовательского процессора контекста 😋

Лично мне не нравится трудный путь, потому что я должен написать тот же код в каждом представлении.

Давайте посмотрим, как это можно сделать простым способом.

Рассмотрим ситуацию, когда вам нужно отобразить Изображение баннера На каждой странице вашего сайта изображение баннера будет вынесено из база данных Отказ

Модель Для знамени о баннере:

#models.py
class BannerImage(models.Model):
    image = models.ImageField(upload_to='img')

Мы можем получить доступ к изображению баннера на каждой странице, используя контекстный процессор.

Запишите пользовательский контекстный процессор 🙌

Создать новый файл context_processors.py Внутри вашего приложения и напишите функцию, которая вернет Словарь Содержащие переменной, мы хотим использовать.

#context_processors.py

from .models import BannerImage

def access_banner_image(request):
    """
      The context processor must return a dictionary.
    """
    bannerImage = BannerImage.objects.latest('-id') #query the latest banner image
    return {'bannerImage':bannerImage} 

Access_Banner_Image Является ли пользовательские контекстные процессоры, которые мы только что создали, добавьте его в context_processors вариант в Шаблоны настройка так, чтобы переменную BannerImage Доступно во всех шаблонах.

#settings.py
TEMPLATES = [
    {
        #under OPTIONS key
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
               #context processor written by us.
           'appname.context_processors.access_banner_image'
],
        },
    },
]

Мы сделали 🎉, BannerImage Переменная теперь будет доступна во всех шаблонах.

Пример:


Спасибо, что прочитали мой пост. 🙂

Самооценка 😀

ИллюстрацияHUnt Одно место для поиска сайтов, предлагающих Бесплатные иллюстрации Отказ

Оригинал: “https://dev.to/gilbishkosma/custom-context-processors-in-django-3c93”