Bugün ne öğrendim? 28 Django Templates ve Filtreler

Merhaba, Bugün templates kullanımı üzerine biraz daha örnekler yaptım. Bunları sizinle paylaşacağım. Güzel yollardan ve filtrelerden bahsedeceğim.

Haydi başlayalım!

DRY kodlama ilkelerini uygulamak için Django Template Miras’ı nasıl kullanabileceğimizi öğrenelim.
Şablon devralma bize devralabileceğimiz bir temel şablon oluşturmamızı sağlar.

Bu bize çok fazla tekrarlayan çalışma kazandırıyor ve web sitemizin tamamında aynı temanın korunmasını ve izlenmesini kolaylaştırıyor!

Örneğin, sayfamızın en üstünde bir gezinme çubuğu istiyorsak, her bir .html dosyasında sürekli olarak aynı gezinti HTML koduna sahip olmak mantıklı olmaz.
Bunun yerine, base.html dosyasına ayarlıyoruz ve şablon kalıtım kullanarak miras alıyoruz.

Bu fikir bazen base.html dosyasını diğer .html dosyalarına genişletirken olduğu gibi şablon genişletme olarak da bilinir.
Kalıtımın yalnızca bir base.html dosyasıyla sınırlı olması gerekmez, birden çok şablonu genişletebilirsiniz. Yani 1den fazla dosyayı şablon olarak kullanbilirsiniz.

Herhangi bir Django Projesine başlamadan önce, ana fikri ve organizasyonu elle çizmek her zaman iyi bir fikirdir.
Bu, şablon kalıtımı için nelerin kullanılabileceğini ve hangi uygulamaları oluşturmanız gerektiğini anlamanıza yardımcı olacaktır!

Biraz da Filtrelerden bahsedelim:

Modelinizden, çeşitli görünümlerde / sayfalarda kullanmak istediğiniz bazı bilgileriniz olduğunu hayal edin.
Ancak, belki de, dize işlemleri veya aritmetik gibi, enjekte etmeden önce bilgileri üzerinde hafif bir düzenleme yapmak istediniz.

Neyse ki Django, kullanıcıya göstermeden önce enjeksiyonu etkilemenizi sağlayan şablon filtrelerin uygulanması için bir ton kolaylık sağlar.
Bu, tek bir kaynaktan esneklik sağlar!

Bir şablon filtre için genel form şudur:
{{ value | filter:”parameter” }}
Tüm filtreler parametrelerde yer almaz.
Bu filtrelerin çoğu ortak yerleşik Python işlevlerine dayanmaktadır, bu yüzden zaten onlara aşina olacaksınız!

Daha fazla bilgiyi docs.djangoproject.com/en/1.10/topics/templates‘den alabilirsiniz.

Örnek bir base.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Base</title>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
    integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

  </head>
  <body>
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <div class="navbar-nav">
        <a class="navbar-brand" href="{% url 'index' %}">DJANGO</a>
        <a class="nav-item nav-link" href="{% url 'admin:index' %}">Admin</a>
        <a class="nav-item nav-link" href="{% url 'basic_app:other' %}">Other</a>
      </div>
    </nav>

    <div class="container">
    {% block body_block %}
    {# Anything outside of this will be inherited if you use extend.#}
    {% endblock %}
    </div>

  </body>
</html>

Örnek bir index.html gördüğünüz gibi sadece o sayfa için gerekli şeyleri içeriyor.

{% extends "basic_app/base.html" %}
{% load my_extras %}

    {% block body_block%}

    <h1>Hello and welcome to the site!</h1>
      <!-- <h1>This is the index.html page</h1> -->
    <h1>{{ text|cutout:"hello" }}</h1>
    <h1>{{ number|add:99 }}</h1>
    {% endblock %}

Bu indexteki gibi siz de farklı sayfalar oluşturabilirsiniz.

Bugünlük anlatacaklarım bu kadar, bir sonraki yazıda görüşmek üzere.

Yorum bırakın