Filters, Read More, Dynamic Href

Kategori: Python / Django , 28 Eylül 2019 , JanFranco


Django'da bir çok filtre bulunuyor. Bu yazımda bu filtrelerden truncatewords filtresini kullanarak yazılarımıza devamını oku özelliği ekleyeceğiz. Diğer filtreler ve anlamları için aşağıdaki linki ziyaret edebilirsiniz:


https://docs.djangoproject.com/en/2.0/ref/templates/builtins/
articles.html dosyasını açalım ve {{article.content}} objesini düzenleyelim:


{{article.content|safe|truncatewords:50}}
Burada filtreler | karakteri ile ayrılmış durumda. Bu karakter ile birden fazla filtre ekleyebiliriz. safe zaten bir filtredir ve biz bu objeye bir de truncatewords filtresini ekleyerek 50 kelimeden fazlasını gizledik. Şimdi devamını oku butonu ekleyelim:


<a href="article/{{article.id}}" class="btn btn-danger">Devamını Oku</a>
Filtrenin ne olduğunu gördük. Bir de dinamik href kavramından bahsetmek istiyorum. Varsayalım ki bir html dosyasında aynı url'yi 50 kez kullandık. views.py dosyasında bu url ile ilgili bir değişiklik yaparsak, ilgili html dosyasındaki linkleri de tek tek güncellememiz gerekir. Bu gibi bir duruma düşmemek için dynamic href özelliğini kullanabiliriz. İlk olarak views.py dosyasını açalım ve paath'lere name özelliği ekleyelim:


path('', views.index, name = "index"),
Artık linkleri aşağıdaki şekilde güncelleyebiliriz:


Eski href: <a class="navbar-brand" href="/">JBlog</a>
Yeni href: <a class="navbar-brand" href="{% url 'index' %}">JBlog</a>
Başka bir uygulamadan çektiğimiz linkleri de şu şekilde düzenleyebiliriz:


Path: path('articles/', include("article.urls")),
Articles path: path('dashboard/', views.dashboard, name = "dashboard"),
Eski href: <a class="nav-link" href="/articles/dashboard">Kontrol Paneli</a>
Yeni href: <a class="nav-link" href="{% url 'article:dashboard' %}">Kontrol Paneli</a>
Son olarak dinamik url'leri de aşağıdaki gibi tanımlayabiliriz:


article/{{article.id}}
{% url 'article:detail' article.id %}


Sonraki Yazı: Searching the Articles
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın