Selam,
Template'de halledebilmen için 2 şeye ihtiyacın var.
1) settings.py içindeki TEMPLATE_CONTEXT_PROCESSORS tuple'ı içine
'django.core.context_processors.request' metodunu koyman gerekiyor.
Şöyle ki:
TEMPLATE_CONTEXT_PROCESSORS = (
...
...
"django.core.context_processors.request",
)
Bu ne yapar? Bu bütün template'lere kullanıcının yaptığı HTTP isteğini
değişken olarak yollar. (Tabi 2. söyleyeceğim koşul da sağlanırsa)
Senin örneğinden gideyim: Şöyle bir view yazmışsınız:
def index(request):
tumyazi = Yazilar.objects.all()
return render_to_response('yazi/index.html', {'tumyazi': tumyazi})
Burada parametre olarak verilen 'request' instance'si
'yazi/index.html' içine değişken olarak otomatik olarak gönderilir ve
sizde template içinde şöyle bir kod yazabilirsiniz:
{% if request.user.is_anonymous %}
Selam anonim kullanıcı
{% else %}
Selam {{request.user.get_full_name}}.
{% endif %}
yada sizin yapmak istediğiniz şeyi yazayım direk olarak;
{% with request.user as user %}
{% if user.is_authenticated %}
{% for yazi in user.yazilar_set.all %}
{{yazi.yazi}}
{% endfor %}
{% endif %}
{% endwith %}
2) Burada 'render_to_response' shortcut metodunu kullanmışsınız. Bu
metodun amacı kısaca verilen template'i (1. paramtere) gene verilen
değişkenler ile(2. parametre) execute etmek. Bu fonksiyon üçüncü bir
parametre olarak context_instance diye bir RequestContext instance'si
alır. Detaylara inmeyeceğim. Konu sapıyor. Şöyle yapmanız gerekiyor:
from django.template import RequestContext
return render_to_response('yazi/index.html', {'tumyazi': tumyazi},
context_instance=RequestContext(request))
- Tabi bu yukarıda anlattıklarım, işinizi template içinde çözmek için
yapmanız gereken yolu anlatıyor. Controller tarafında yapmanız için;
@login_required
def index(request):
tumyazi = Yazilar.objects.filter(temsilci = request.user) //
login_required decorator'ı oldugu için loggedin kullanıcının
geleceğinden eminiz.
return render_to_response('yazi/index.html', {'tumyazi': tumyazi})
Görüşürüz.
2010/2/9 "H.İbrahim YILMAZ" <[email protected]>:
> Merhaba,
> Django ile yazmakta olduğum yazılımın üyelik işlemlerini djangonun kendi
> içerisinde gelen user.auth yapısıyla yapmaktayım. Bir kullanıcı siteye
> login olduktan sonra karşısına sadece onun yazdığı yazıların gelmesini
> istiyorum. Bunu template içinde mi halletmemiz gerekli yoksa views.py
> ile mi? Basitçe şu şekilde bir yapım var. Açıksası googleladım adım ama
> karşıma çıkanlar tam istediğim şeyler olmadı sanırım yanış keyword
> kullanıyorum :)
> Saygılar.
>
> from django.db import models
> from django.contrib.auth.models import User
>
> class Yazilar(models.Model):
> yazi = models.CharField(max_length=200)
> temsilci = models.ForeignKey(User)
> _________________________________________________________
>
> from django.shortcuts import render_to_response
> from yeni.yazi.models import Yazilar
> from django.contrib.auth.decorators import login_required
>
> @login_required
> def index(request):
> tumyazi = Yazilar.objects.all()
> return render_to_response('yazi/index.html', {'tumyazi': tumyazi})
>
>
> --
> H.İbrahim YILMAZ
> Sales & Technical Manager
> Marmara Bilişim
> Hürriyet Sokak 6/A YALOVA
> Tel: +90 226 813 3131
> http://www.bilisimmarmara.com.tr
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
--
Özgür Vatansever
Sent from Istanbul, 34, Turkey
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php