25 Şubat 2014 Salı

Etiketler

Şimdiye kadar şablonlar içerinde sadece aktardığımız verilere ulaştık. Bunun dışında şablonlar içerisinde programlama etiketlerini kullanabiliriz.








if/else Etiketi
##Kullanımı
{% if kontrol %}
....
{% else %}
....
{% endif %}
Burada dikkat etmemiz gereken açtığımız etiketi end ifadesi ile sonlandırıyor olmamızdır. Bunu tüm etiketlerde yapmak zorundayız.
s = template.Template('{{uye.adi}} isimli üyemiz {% if uye.bagis %} bağış yapmıştır. {% else %} bağış yapmamıştır {% endif %}');
b= template.Context({"uye":{"adi":"Muratcan","bagis":True}})
print s.render(b)

###Çıktı###
Muratcan isimle üyemiz  bağış yapmıştır. 
if etiketinde kullandığımız nesneler eğer boş ise False döner. Aynı örneği şu şekilde değiştirelim.
b= template.Context({"uye":{"adi":"Muratcan"}})
print s.render(b)
###Çıktı###
Muratcan isimli üyemiz  bağış yapmamıştır
İç içe istediğimiz kadar if/else etiketleri kullanabiliriz.
s = template.Template('''
{{ ogr.adi }}'nın Programlama Harf Notu
{% if ogr.not > 60 %} BB
{% elif ogr.not > 70 %} BA
{% elif ogr.not > 80 %} AA
{% else %} FF
{% endif %}
''');
b= template.Context({"ogr":{"adi":"Muratcan","not":75}})
print s.render(b)
###Çıktı###
Muratcan'nın Programlama Harf Notu
BB
Programı şu hale getirelim. Hem iç içe if/else kullanmış olalım. Hemde birden fazla öğrenci için tekrarlamış olalım.
ogr_liste = ({"adi":"Muratcan","not":75},{"adi":"Miran","not":30})

s = template.Template('''
{{ ogr.adi }}'nın Programlama Harf Notu
{% if ogr.not > 40 %}
 {% if ogr.not > 60 %} BB
 {% elif ogr.not > 70 %} BA
 {% elif ogr.not > 80 %} AA
 {% endif %}
{% else %}
  FF dersten kaldı.
{% endif %}
''');
for i in ogr_liste:
 b= template.Context({"ogr":i})
 print s.render(b)
###Çıktı###
Muratcan'nın Programlama Harf Notu
  BB
Miran'nın Programlama Harf Notu
  FF dersten kaldı.
Karşılaştırma İşleçleri
Önceki örneklerde kullandığımız > işleci bunlardan birisidir. Programlama da kullandığımız işleçlerden hiç bir farkı yoktur.
== işleci (Eşitlik) ve != işleci (Eşit değil)
İki ifadenin eşit olduğu durumlarda çalışır.
b = template.Template('''{{personel.adi}}'nın maaşı
{% if personel.ucret == 1000 %}
1000 TL
{% endif %}
''')
s= template.Context({"personel":{"adi":"Ali","ucret":1000}})
print b.render(s)
###Çıktı###
Ali'nın maaşı
1000 TL
!= işleci iki ifadenin eşit olmadığı durumda çalışır.
>işleci (Büyük) ve >= işleci (Büyük eşitti)
Matematikteki büyüktür işareti gibidir. > işlecinin solundaki ifade sağındaki ifadeden büyük ise çalışır.
b = template.Template('''{{personel.adi}}'nın maaşı
{% if personel.ucret > 1000 %}
1000 TL'den fazla.
{% endif %}
''')
s= template.Context({"personel":{"adi":"Ali","ucret":1200}})
print b.render(s)
###Çıktı###
Ali'nın maaşı
1000 TL'den fazla.
>= işleci eşitlik durumunda da çalışır.
< işleci (Küçük) ve <= işleci (Küçük eşittir)
> işlecinin tam tersi durumlarda işlem yapar.
in (İçinde) ve not in (İçinde değil)
in aradığımız liste gibi bir ifadenin içerisinde var ise çalışır.
b = template.Template('''
{% if "Futbol" in personel.sporlar %}
 Personel Futbol oynuyor.
{% endif %}
''')
s= template.Context({"personel":{"adi":"Ali","ucret":1200,"sporlar":["Futbol","Basketbol"]}})
print b.render(s)
###Çıktı###
Personel Futbol oynuyor.
Operatörler
Karşılaştırma yaparken and,or,and not gibi operatörleri kullanabilirsiniz.
b = template.Template('''
{% if bilgisayar.fiyat < 2000 and bilgisayar.fiyat > 1500 %}
Bilgisayarın fiyat aralığı normal.
{% endif %}
''')
s= template.Context({"bilgisayar":{"markası":"Samsung","fiyat":1600}})
print b.render(s)
###Çıktı###
Bilgisayarın fiyat aralığı normal.
ifequal/ifnotequal Etiketi
İki değeri karşılaştırmak için kullanılır.
###Kullanımı
{% ifequal deger1 deger2 %}
...
{% endifequal %}
Öğrenci adını kıyaslayan bir uygulama yapalım.
b = template.Template('''
{% ifequal ogr.adi "Ali" %}
Hoşgeldin Ali
{% endifequal %}
''')
s= template.Context({"ogr":{"adi":"Ali"}})
print b.render(s)
Bu etiket yerine == (Eşitlik) işlecini kullanabiliriz.
for Etiketi
Şablon içerisinde kullanabileceğimiz tek döngü for döngüsüdür. Python derslerinden hatırlarsanız iterasyon işlemleri için bu döngüyü kullanıyorduk.
##Kullanımı
{% for %}
...
{% endfor %}
Alış veriş listesi adında bir uygulama yaparak kullanımını gösterelim.
alisveris_listesi = ["Elma","Armut","Makarna","Pirinç","Salça"]
Alışverişte alınacaklar:
b = template.Template('''
{% for i in liste %}
{{ i }}
{% endfor %}
''')
s= template.Context({"liste":alisveris_listesi})
print b.render(s)
###Çıktı###
Alışverişte alınacaklar:
Elma 
Armut 
Makarna 
Pirinç 
Salça 
Şimdi bu tarz bir örneği HTML etiketleri ile kullanalım.
spor = ["Futbol","Basketbol","Hentbol","Voleybol"]

b = template.Template('''

Spor Çeşitleri:

    {% for i in liste %}
  • {{ i }}
  • {% endfor %}
''') s= template.Context({"liste":spor}) print b.render(s) ###Çıktı###

Spor Çeşitleri:

  • Futbol
  • Basketbol
  • Hentbol
  • Voleybol
Sitemizde kullanabileceğimiz bir liste elde etmiş olduk.
for Döngüsünün Bazı özellikleri
forloop.counter ile sayaç indislerini alabiliriz. Alışveriş listesi örneğini şu şekilde değiştirelim.
b = template.Template('''

Alışverişte alınacaklar:

{% for i in liste %} {{ forloop.counter }}.{{ i }} {% endfor %} ''') ###Çıktı### 1.Elma 2.Armut 3.Makarna 4.Pirinç 5.Salça
Burada indis 1'den başlamıştır. Eğer 0'dan başlamasını istersek forloop.counter0 ifadesini kullanabilirsiniz.
b = template.Template('''

Alışverişte alınacaklar:

{% for i in liste %} {{ forloop.counter0 }}.{{ i }} {% endfor %} ''') ###Çıktı### 0.Elma 1.Armut 2.Makarna 3.Pirinç 4.Salça
Sayacı tersten başlatmak istersekforloop.revcounter ifadesini kullanabiliriz.
b = template.Template('''

Alışverişte alınacaklar:

{% for i in liste %} {{ forloop.revcounter }}.{{ i }} {% endfor %} ''') ###Çıktı### 5.Elma 4.Armut 3.Makarna 2.Pirinç 1.Salça
Eğer sayacın 0'da sonlanmasını istiyorsanız forloop.revcounter0 ifadesini kullanabilirsiniz.
Döngü işlemi yaparken döngünün başlangıcını ve sonunu bilmek istiyorsak forloop.first ve forloop.last ifadelerini kullanabiliriz.
b = template.Template('''

Alışverişte alınacaklar:

{% for i in liste %} {% if forloop.first %}
  • {% elif forloop.last%}
  • {% else %}
  • {% endif %}{{ i }}
  • {% endfor %} ''') ###Çıktı###

    Alışverişte alınacaklar:

  • Elma
  • Armut
  • Makarna
  • Pirinç
  • Salça
  • Döngü içerisinde ilk ve son elemanları yakalayarak özel sınıf atamaları yaptık.
    Yorumlar
    Şablonlar içerisine yorum satırları ekleyebiliriz.
    {# Burası tek satır yorum eklemek için #}
    
    {% comment %}
    Burası birden fazla
    satır yorum eklemek için
    {% endcomment %}
    
    Kaynakça:

    0 yorum :

    Yorum Gönderme