/Django

Tutorial Context Processor Di Django Untuk Pemula

Tutorial Django Untuk Pemula - Apa Itu Context Processors Pada Django?

Apa yang dimaksud context_processor pada django dan apa kegunaannya?

Artikel kali ini akan membahas sekilas mengenai context processor pada django dan contoh kegunaannya secara simple.

Salah fungsi context_processors adalah sebuah metode untuk mempermudah kita menampilkan data secara global tanpa harus membuat fungsi yang saama berulang kali di banyak views / templates.

Pada sesi ini kita akan menggunakan contoh simple pada sebuah blog, yaitu related articles. Jika kita perhatikan, related articles (artikel terkait konten yang sedang kita baca pada blog tersebut) sering kali muncul di beberapa halaman bukan? Dapat berdasarkan kategori yang sama, tag yang sama, ataupun berdasarkan hal-hal lain.

Contoh simple salah satu context_processors yang digunakan pada situs syarat.id adalah seperti berikut:

Buat file bernama context_processors.py di dalam folder blog (app) kita:

- blog
    - urls.py
    - models.py
    - views.py
    - forms.py
    - context_procecssors.py # file context processor kita

- core
    - settings.py
    - asgi.py
    - urls.py

Pada file di atas, kita dapat menaruh file context_processors ini dimanapun sesuai dengan keinginan.

Isi dari file context_processors.py itu sendiri sebagai berikut:

from random import shuffle
from .models import Blog

# function untuk context processors
def related(request):
    x = Blog.objects.filter(action='Publish')[:7]
    y = list(x)
    shuffle(y)
    return {
        'related': y
    }

Pada kode di atas, kita telah membuat sebuah function bernama related yang akan kita gunakan untuk context_processors kita nantinya.

Kita juga mengacak value dari function related tersebut menggunakan built-in function dari python yaitu shuffle (from random import shuffle) agar artikel yang muncul pada related artikel nantinya menjadi lebih dinamis.

Langkan selanjutnya adalah mengedit file settings.py kita untuk mendefinisikan function di atas.

Edit file settings.py seperti contoh di bawah ini

# settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(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',
                ...
                # context processors yang baru kita buat
                'blog.context_processors.related',
                ...
            ],
        },
    },
]

Pada contoh di atas, kita telah mendaftarkan custom context_processors yang baru saja kita buat bernama related.

Selanjutnya, kita tidak perlu lagi membuat fungsi yang sama untuk menampilkan related artikel pada setiap halaman blog/situs. Cukup dengan memanggil fungsi related seperti di bawah ini, maka value tersebut akan muncul di semua halaman.

Contoh penggunaan context_processors sederhana pada django:

Edit file template blog_detail.html dan tambahkan baris kode seperti berikut:

<!-- nama context procecssors kita -->
{% if related %}
    <div class="related_list d-none d-lg-block">
        <ul>
            <!-- looping value dari context processors tersebut -->
            {% for i in related %}
                <li class="related_list_items"><a href="{% url 'blog_detail' i.category.category_url i.url %}">{{ i.title }}</a></li>
            {% endfor %}
        </ul>
    </div>

{% endif %}

Pada kode html di atas, kita menggunakan if statement untuk menampilkan data dari fungsi related, dan melakukan looping di dalamnya. Dan kita dapat memanggil fungsi tersebut berulang-ulang membuat related artikel pada halaman blog detail ataupun halaman lainnya sesuai dengan kebutuhan.

Contoh penggunaan dari fungsi di atas dapat teman-teman temukan pada kumpulan syarat-syarat terlengkap.

Demikian fungsi sederhana dari sebuah context_processors dari django. Dari contoh di atas, tentunya teman-teman semua dapat ber-eksperimen sendiri untuk meng-explore lebih jauh tentang bagai mana cara menggunakan context_processors yang lebih advance.

Terima kasih telah membaca! Keep run the server, don’t stop!.


💡

Pro Tip Gunakan metode context_processorsUntuk menampilkan summary, latest, ataupun results pada sebuah dashboard.

Tags: #python, #Django, #Blog

Next tutorial > Integrate static files pada django

Django SEO Tutorial > Membuat user authentication pada django untuk pemula


Subscribe to noTnoob Dev

Get the latest posts delivered right to your inbox

iColdPlayer

iColdPlayer

Backend Developer | Python, Django, Linux & Rails

Read More