django-routines-tr Nedir? Django Projelerinde Kullandığımız Türkçe Altyapı Kütüphanesi

Metin Oktay DENİZ

Metin Oktay DENİZ

01 Haziran 2026
BU YAZIYI PAYLAŞ
django-routines-tr Nedir? Django Projelerinde Kullandığımız Türkçe Altyapı Kütüphanesi

VENVA Yazılım olarak geliştirdiğimiz django-routines-tr, Django projelerinde sık tekrar eden middleware, çoklu dil slug yönetimi, görsel sıkıştırma ve rate limit loglama gibi altyapı ihtiyaçlarını tek bir pakette topluyor. Bu yazıda kütüphaneyi ve neden geliştirdiğimizi anlatıyoruz.

Django ile proje geliştirirken, neredeyse her projede karşımıza çıkan bazı tekrar eden ihtiyaçlar vardır: çoklu dilde SEO uyumlu slug üretmek, görselleri otomatik sıkıştırıp WEBP formatına çevirmek, e-posta ile giriş yapılabilmesini sağlamak, admin panelini güvenli hale getirmek... Her yeni projede bu kodları baştan yazmak yerine, VENVA Yazılım olarak bu ihtiyaçları tek bir pakette topladık: django-routines-tr.

django-routines-tr Nedir?

django-routines-tr, Django projeleri için geliştirdiğimiz, tekrar kullanılabilir middleware, authentication backend ve yardımcı fonksiyonlardan oluşan hafif bir kütüphanedir. Amacımız, production ortamında sürekli ihtiyaç duyduğumuz altyapı kodlarını standartlaştırmak ve her projede yeniden yazmak zorunda kalmamaktı. Paket, PyPI üzerinden herkese açık şekilde yayınlanmış durumda ve pip ile kolayca kurulabiliyor.

Kurulum

Kütüphaneyi projenize eklemek tek satırlık bir işlem:

pip install django-routines-tr

Görsel sıkıştırma özellikleri için Pillow bağımlılığı otomatik olarak birlikte kurulur, ayrıca bir işlem yapmanıza gerek kalmaz.

Dil Yönlendirme ve Admin Güvenliği

Paket içindeki LanguageRedirectMiddleware, sitenizdeki URL'leri aktif dile göre otomatik olarak prefixler, static ve media yollarını bu işlemden hariç tutar ve çift dil prefixi oluşmasını engeller. AdminRedirectMiddleware ise admin paneline sadece superuser erişimine izin vererek, yetkisiz erişim denemelerinde HTTP 404 döndürür — bu sayede admin panelinizin varlığı dışarıdan daha az fark edilir hale gelir.

Çoklu Dil Slug Sistemi

Çok dilli bir site işletiyorsanız, her dil için ayrı ayrı SEO uyumlu slug üretmek can sıkıcı bir iştir. coklu_slugify fonksiyonu, Türkçe karakterleri doğru şekilde normalize eder ve hangi alfabede yazıldığını otomatik tespit eder:

from django_routines.i18n.slugify import coklu_slugify

slug = coklu_slugify("İstanbul Şehir Rehberi")
# istanbul-sehir-rehberi

Latin alfabesi dışındaki diller (Arapça, Kiril, Yunanca, İbranice, Çince gibi) için de otomatik olarak Unicode uyumlu slug üretir — yani manuel olarak hangi dilde ne yapılacağını kodlamanıza gerek kalmaz.

coklu_dil_slug_uygula fonksiyonu ise bu işlemi bir adım öteye taşır: modelinizdeki settings.LANGUAGES içinde tanımlı her dile göre otomatik slug üretip ilgili alanlara yazar. Örneğin isim alanından slug, isim_en alanından slug_en otomatik oluşur — modelde ilgili alan yoksa da hata vermeden atlanır.

Görsel Sıkıştırma

Kendi sitelerimizde de yoğun şekilde kullandığımız resim_sikistir fonksiyonu, bir ImageField'ı otomatik olarak WEBP formatına çevirir, belirlediğiniz maksimum kenar uzunluğuna göre yeniden boyutlandırır ve hedef dosya boyutunun altına düşene kadar kaliteyi kademeli olarak optimize eder. Eski görsel değiştirildiğinde ise otomatik olarak ayrı bir klasöre taşınır, veri kaybı yaşanmaz.

from django.db import models
from django_routines.images.compress import resim_sikistir

class Urun(models.Model):
    resim = models.ImageField(upload_to="urun_resimleri/", blank=True, null=True)

    def save(self, *args, **kwargs):
        resim_sikistir(self, "resim", dosya_adi="urun", max_kb=200, max_kenar=1200)
        super().save(*args, **kwargs)
E-posta ile Giriş

Birçok projede kullanıcıların e-posta adresiyle giriş yapabilmesi istenir. EmailBackend, bu ihtiyacı Django'nun standart authentication sistemine ek bir backend olarak entegre eder, ekstra bir paket ya da özel kod yazmaya gerek bırakmaz.

Rate Limit Aşımı Loglama

django-ratelimit ile birlikte çalışan ratelimit_sinir fonksiyonu, bir kullanıcı istek sınırını aştığında (HTTP 429) detaylı bir güvenlik logu üretir. Bu log; istemci IP adresi, kullanıcı bilgisi, istek yolu, query string, referer, user-agent ve session bilgisi gibi verileri içerir — böylece olası kötüye kullanım denemelerini daha net izleyebilirsiniz.

Neden Geliştirdik?

VENVA Yazılım olarak farklı sektörlerden birçok müşteri için Django tabanlı projeler geliştiriyoruz. Her projede karşımıza çıkan bu tekrar eden ihtiyaçları tek bir yerden yönetmek, hem geliştirme sürecimizi hızlandırdı hem de kod kalitemizi standart hale getirdi. django-routines-tr'yi açık şekilde PyPI üzerinden paylaşmamızın sebebi de bu deneyimi diğer Django geliştiricileriyle de paylaşmak istememiz.

Sonuç

django-routines-tr, küçük ama production odaklı bir kütüphane. Python 3.10 ve Django 4.2 üzerinde çalışıyor, Apache lisansı ile herkese açık. Projelerinizde çoklu dil desteği, görsel optimizasyonu veya güvenlik altyapısı ile ilgili benzer ihtiyaçlarınız varsa, kütüphaneyi PyPI üzerinden inceleyebilirsiniz.

Son Yazılar Son Yazılar