Merih Forum Programlama ve yazılım algoritmalar programlama python Flask Template lerde kontrol ifadeleri (for, if)

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Template lerde kontrol ifadeleri (for, if)

 
#1

Templatelerde kontrol ifadeleri ve 

Kod:
for

 döngüsü tanımlanırken 

Kod:
{% %}

 kullanılır:

Kod:
#hello.py
@app.route('/')
def index():
   deger = True
   names = ["ali", "ramazan", "suleyman"]
   return render_template("index.html", deger=deger, names=names)


#index.html
{% if deger %}
   <h3>Deger {{deger}} </h3>
{% else %}
   <h3>Deger {{deger}} </h3>
{% endif %}
{% for name in names %}
   {{name}}
{% endfor %}

Kod:
if


Kod:
for

 kullanıldığında kapanış bloğu eklenmelidir(

Kod:
endif


Kod:
endfor

), eklenmezse hata alınır.

Templatelerde bahsedilmesi gereken öndemli diğer konu ise macrolardır. Macrolar programlama dillerindeki fonksiyonlar gibidirler. Programlama dillerindeki fonksiyonların en önemli amaçlarından biri, programcıyı kendi kendini tekrarlamaktan kurtarırlar. Macrolar da templatelerde aynı amaca hizmet ederler.
Örnek olarak bir macro oluşturalım:
Kod:
{% macro input(name, value="", type="text", size=20) %}
   <input type="{{type}}" name="{{name}}" value="{{value}}" size="{{size}}">
{% endmacro %}

Macro tanımlarken 
Kod:
{% macro macro_ismi(varsa_parametre) %}

 şeklinde tanımlanır. Kontrol ifadelerinde olduğu gibi bitiş bloğu gereklidir 

Kod:
{% endmacro %}.

Şimdi bu macroyu kullanalım:
Kod:
<p> {{ input('username') }} </p>
<p> {{ input('password', type='password') }} </p>

yukarıda ilk çağırmada html 
Kod:
input

 etiketinin 

Kod:
name

 özelliğinin değerini username diğerinin ise password type'ını ise password yaptık. Böylelikle iki kere tanımlayacağımız gereken  etiketini tek bir seferde tanımlayıp istediğimiz kadar çağırabiliriz. Macro çağrıldığı yerde içerisindeki kodlar doğrultusunda işlemler gerçekleştirir. Örnekte bizim


etiketleri içerisinde  etiketi oluşur.

Tanımladığımız bu macroyu başka bir template'de kullanmak istersek:
Kod:
#index2.html
{% from 'index.html' import input %}

Diyelim ki bir html sayfasına sadece macroları tanımladığınız kullanmak için. Birden fazla macro olabilir. Örnek vererek açıklayalım:
Kod:
#macrolar.html
{% macro input(name, value="", type="text", size=20) %}
   <input type="{{type}}" name="{{name}}" value="{{value}}" size="{{size}}">
{% endmacro %}
{% macro textarea(name, value=' ', rows=30, cols=20) %}
   <textarea name="{{name}}" rows="{{rows}}" cols="{{cols}}">{{value}}</textarea>
{% endmacro %}

Şimdi bu macroları kullanalım:
Kod:
#index.html
{% import 'macrolar.html' as macrolar %}
   <p>{{macrolar.input('username')}}</p>
   <p>{{macrolar.input('password')}}</p>
   <p>{{macrolar.textarea('post')}}</p>

Eğer özellikle birini 
Kod:
import

 etmek istersen:

Kod:
{% from 'macrolar.html' import input as input_field %}

çeşitli kullanım yöntemleri mecuttur.



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Template lerde link oluşturma (flask'ın url_for() fonksiyonu) efsane 0 1,468 30-05-2017, Saat: 16:09
Son Yorum: efsane
  Template lerde kalıtım efsane 0 1,351 30-05-2017, Saat: 16:07
Son Yorum: efsane
  Template (html sayfaları) efsane 0 1,275 30-05-2017, Saat: 16:06
Son Yorum: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2020 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2020 Tüm hakları saklıdır.