GenelDjangoPythonYazılım

Django Context Processors Kullanımı 

Context processor nedir?

Django Context Processors Kullanımı 
Context processor nedir?

Django Context Processors Kullanımı  | Context processor nedir? Context processor kavramı, esasen Django Template Language içerisinde anlamlı olan ve templateler içerisinde kullanılabilecek olan nesneleri tutan Django yapısıdır.

Context processor template’de birden fazla kullandığımız verileri birden fazla kez view’de göndermek yerine, tüm sayfalarda çağırılması için ayarlanır ve o liste, dizi veya veri tüm html sayfalarına response olarak döndürülür.

Context processor nasıl kullanılır?

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [str(BASE_DIR / "templates")],
        "APP_DIRS": True,
        "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",
            ],
        },
    },
]

Çalışma yapısını anladığınıza göre, kendimizi her viewda tekrar etmektense birden fazla yerde kullanılacak contexti döndüren bir processor dosyası kodlayalım.

proje_adiniz/context_processors.py
from django.conf import settings
from blog.category.models import Category
def get_all_data(request):
    return {
        "APP_VERSION_DATE": settings.APP_VERSION_DATE,
        "APP_VERSION": settings.APP_VERSION,
        "categories": Category.objects.all()
    }

Gerekli olan processorı yazdık fakat, geçerli olması ve kullanılabilmesi için TEMPLATES değişkeni içerisinde kayıt etmeliyiz. Yukarıdaki return edilen değişkenlere projemizin her yerinde erişebiliriz. mükerrer kod yazılmasına gerek kalmayacaktır.

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [str(BASE_DIR / "templates")],
        "APP_DIRS": True,
        "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",
                "proje_ismi.context_processors.get_all_data"
            ],
        },
    },
]

Kayıt işlemi tamamlandıktan sonra, template içerisinde doğrudan aşağıdaki gib kullanılabilir.

 <div>
  <p>Uygulama versiyon: {{APP_VERSION}}</p>
  <p>son versiyon tarihi: {{APP_VERSION_DATE}} </p>
</div> 

Bu şekilde istediğimiz dataların hepsini bir kere yazıp tüm template dosyalarından kullanabiliriz. Az kod çok iş için Django her zaman favorim olmuştur. Bu ve bunun gibi güzellikler için sana minnettarız kralım.

Kıvırcık Yazılımcı – o7

Kıvırcık

Yazılım dersleri üzerine yazı paylaşacağım.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Başa dön tuşu