arkadaşlar django ya yeni başladım kendi oluşturduğum şablonları içe nasıl aktaracağımı bilmiyorum.settings.py ayarlarını yapamadım bi türlü sürekli
“TypeError at /ilk/
context must be a dict rather than Context”. hatası alıyorum
from django.template import Context
from django.template.loader import get_template
from django.http import *
def ogrenci_listesi(request):
ogrenciler=((“selim”,“yıldırım”,20,40)(“enes”,“sümbül”,60,50))
s=get_template(“deneme.html”)
b=Context({“ogrenciler”:ogrenciler})
html=s.render(b)
return HttpResponse(html)
kodlar bu sekilde ama hata alıyorum çalıştığı zaman
girintileri tam ayarlayamadığım için kusura bakmayın arkadaşlar.
Yanlış görmediysem sıkıntı son iki satırda. render metodu HttpResponse
a vermek yerine direkt olarak return deyimiyle döndürmelisiniz. Ama siz yine de render metodunun kullanımını araştırın.
hocam dediğiniz şekilde de olmadı.bi türlü kendi yazdığım şablonları içe aktaramıyorum. galiba settings.py ayarlarında bi yanlışlık yapıyorum.orda ki template ayarları ise şu şekilde:
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
‘DIRS’: [r"C:\Users\IBRAHIM\dj_uygulama\ilk\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’,
],
},
},
]
Neden böyle bir yapı kullandığını ve nereden bu şekilde kodlamayı öğrendiğini bilmiyorum fakat biz bu şekilde kodlamıyoruz sana şu şekilde anlatmaya çalışcayım nasıl yapman gerektiğini umarım yardımı dokunur.
views.py
from django.shortcuts import render
from django.contrib.auth.models import User
def my_function(request):
users_query = User.objects.all()
return render(request, 'user/users.html', {'users': users_query })
user/users.html
{% for user in users %}
{{ user }}
{% endfor %}
burada benim projemin settins linkini bıraktım ordan dosyayı inceleyebilirsin settings.py dosyam
bu şekilde view içindeki verilerini template içine gönderebiliyorsun
Birde class based kodlama’da mevcut django’da ben onu kullandım kodlarımı inceleyerek onun hakkındada fikir edinebilirsin. ama fonksiyonel yazıyorsan yukarıda yazdıgım mantıkta yazabilirsin.
Sağolun hocam teşekkürler.ben pythonda orta seviye biliyorum. Djangoda ise daha yeniyim kaynak amaçlı Mustafa başerin Django kitabını kullanıyorum fakat baskı olarak biraz eski olduğu bazı noktalarda sıkıntı oluyor. Tekrardan çok sagolun
context must be a dict rather than Context”. hatası alıyorum
context değişkenini şu format da göndermeyi dener misiniz?
context = {‘a’:1}
template = ‘templates/mysite/abc.html’
return render(request, template, context)