Bazı değişkenlerimi tüm görünümlerime iletmem gereken bir noktaya geldim (çoğunlukla özel kimlik doğrulama türü değişkenleri).django içinde kendi içerik işlemcimi oluşturma
Kendi içerik işlemcimin bunu yapmanın en iyi yolu olduğunu yazmam söylendi, ancak bazı sorunlar yaşıyorum. Gördüğünüz gibi
Benim ayarlar dosyası ben 'context_processors' adlı bir modül ve 'say_hello' denilen içinde bir işlevi var, bu
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
"sandbox.context_processors.say_hello",
)
benziyor.
Birazdan ben şimdi görünümler içinde aşağıdakileri yapabilirsiniz varsaymak muyum
def say_hello(request):
return {
'say_hello':"Hello",
}
benziyor hangisi?
{{ say_hello }}
Şu anda, bu benim şablonunda hiçbir şey kılar.
Bence yazdığınız bağlam işlemci çalışması gerekir
from django.shortcuts import render_to_response
def test(request):
return render_to_response("test.html")
'context_instance' eksik olan şeydir! Teşekkürler TM – dotty
Takip et, nasıl bu context_instance'a ihtiyacım var? Django'nun auth sistemini kullanırsam buna nasıl ihtiyacım yok? – dotty
Django'nun yerleşik görünümleri bunu sizin için halleder ('RequestContext' kullanırlar). Yaptığınız içerik işlemcisini düşünün. Bir argüman olarak 'istek' alır. Bu, bir şekilde geçerli isteği oluşturma mantığına vermeniz gerektiği anlamına gelir. 'RequestContext' temel olarak sadece tüm bağlamsal işlemciler arasında döngü döngüsünü basitleştirir ve mevcut talebi onlara aktarır, ardından sayfa içeriğini sonuçlar ile günceller. –