python / intermediate
Snippet
Django Context Processors für Dynamische Template-Daten
Context Processors ermöglichen es Ihnen, Variablen automatisch in jeden Template-Kontext zu injizieren, ohne sie manuell in jeder View übergeben zu müssen. Es sind Funktionen, die das Request-Objekt empfangen und ein Dictionary von Variablen zurückgeben. Dies ist ideal für globale Daten wie Website-Einstellungen, Navigationskategorien, Warenkorb-Status oder benutzerspezifische Informationen, die in allen Templates verfügbar sein sollten.
snippet.py
1
from django.conf import settings\nfrom .models import Category\n\ndef site_info(request):\n return {\n 'site_name': settings.SITE_NAME,\n 'site_version': settings.SITE_VERSION,\n 'debug_mode': settings.DEBUG\n }\n\ndef categories_processor(request):\n categories = Category.objects.filter(is_active=True)\n return {'all_categories': list(categories.values('id', 'name'))}\n\ndef cart_processor(request):\n cart_count = 0\n cart_total = 0\n if request.user.is_authenticated:\n try:\n cart = request.user.cart\n cart_count = cart.items.count()\n cart_total = cart.total_price\n except Cart.DoesNotExist:\n pass\n return {'cart_count': cart_count, 'cart_total': cart_total}
django
Erklärung
1
def site_info(request):
Erstelle eine Context-Processor-Funktion, die den Request empfängt
2
'site_name': settings.SITE_NAME,
Gib Einstellungswerte zurück, die in allen Templates verfügbar sind
3
def categories_processor(request):
Datenbankabfrage zum Abrufen aktiver Kategorien
4
return {'cart_count': cart_count, 'cart_total': cart_total}
Gib benutzerspezifische Warenkorb-Daten für jede Template-Renderung zurück