Django Admin'i "Bize Özgü" Yapmak: Tam Kapsamlı Türkiye Optimizasyonu
Django Admin panelini Türkiye’deki kullanıcılar ve yerel gereksinimler için optimize etmek, projenizin profesyonelliğini artırır. Bu makalede, dil ayarlarından tarih formatlarına ve bölgesel saat dilimine kadar adım adım özelleştirme sürecini inceleyeceğiz.
Web projelerinizde Django'nun sunduğu o güçlü admin panelini kullanırken, arayüzü Türkiye'deki kullanıcıların alışkanlıklarına göre optimize etmek projenizin kalitesini doğrudan artırır. Django Admin Türkçeleştirme, doğru saat dilimi (timezone) ayarları ve model isimlerini yerelleştirme gibi temel adımlar, her Django geliştiricisinin bilmesi gereken detaylardır. Bu makalede, settings.py yapılandırmasından başlayarak, yönetim panelinizi baştan aşağı Türkiye standartlarına göre nasıl özelleştireceğinizi öğrenip projelerinize profesyonel bir dokunuş katacaksınız.
1. Temel Yerelleştirme Ayarları
İlk adım, settings.py dosyasında Django'nun Türkiye standartlarını kullanmasını sağlamaktır.
# settings.py
# Dil kodunu Türkçe yapın
LANGUAGE_CODE = 'tr-TR'
# Saat dilimini Türkiye olarak ayarlayın
TIME_ZONE = 'Europe/Istanbul'
USE_I18N = True # Uluslararasılaştırma desteği
USE_L10N = True # Yerelleştirme desteği (formatlar için)
USE_TZ = True # Veritabanında UTC kullanır, görüntülemede yerel saate çevirir
2. Admin Başlıklarını ve Metinlerini Türkçeleştirme
Admin panelinin üst kısmında yer alan "Django Administration" gibi İngilizce ibareleri markanıza veya projenize uygun şekilde değiştirebilirsiniz. Bunun için urls.py dosyasını kullanmak en pratik yoldur.
# urls.py
from django.contrib import admin
from django.urls import path
admin.site.site_header = "Şirket Paneli Yönetimi"
admin.site.site_title = "Yönetim Paneli"
admin.site.index_title = "Hoş Geldiniz"
3. Model İsimlerini ve Alanları Özelleştirme
Django modelleri varsayılan olarak sınıf isimlerini kullanır (Örn: "Product" için "Products"). Türkiye'deki çoğul eklerine ve harf kurallarına (i/İ, ı/I karmaşası) uygun hale getirmek için Meta sınıfını kullanmalısınız.
from django.db import models
class Urun(models.Model):
ad = models.CharField(max_length=100, verbose_name="Ürün Adı")
fiyat = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="Birim Fiyatı")
class Meta:
verbose_name = "Ürün"
verbose_name_plural = "Ürünler"
def __str__(self):
return self.ad
4. Tarih ve Para Birimi Formatları
Türkiye'de tarih formatı genellikle GG.AA.YYYY şeklindedir. Django'nun bu formatı her yerde doğru göstermesi için settings.py içinde şu eklemeyi yapabilirsiniz:
# settings.py
FORMAT_MODULE_PATH = [
'proje_adi.formats',
]
Daha sonra projenizde formats/tr/formats.py dosyası oluşturup özel formatlar tanımlayabilirsiniz. Ancak USE_L10N = True ayarı çoğu zaman standart Türk formatlarını otomatik getirecektir.
5. Görsel Özelleştirme ve Dashboard Düzeni
Admin panelini daha "Türk işi" ve kullanışlı hale getirmek için ModelAdmin sınıflarını optimize edin. Arama çubukları ve filtreler eklemek kullanıcı deneyimini iyileştirir.
# admin.py
from django.contrib import admin
from .models import Urun
@admin.register(Urun)
class UrunAdmin(admin.ModelAdmin):
list_display = ('ad', 'fiyat', 'kayit_tarihi') # Listede görünecek sütunlar
list_filter = ('kayit_tarihi',) # Sağ taraftaki filtre paneli
search_fields = ('ad',) # Arama kutusu
Önemli İpucu: Büyük/Küçük Harf Hassasiyeti
Türkçe "i" ve "I" harfleri yazılım dünyasında meşhur bir sorundur. Veritabanı sorgularında (Örn: __icontains) sorun yaşamamak için veritabanınızın (PostgreSQL önerilir) Turkish (tr_TR) collation desteğine sahip olduğundan emin olun.
Bu ayarlar sayesinde Django Admin paneliniz tamamen Türkçe ve Türkiye standartlarına uygun bir görünüme kavuşacaktır.
Django Admin’i Türkiye’ye uygun, kurumlara özel ve profesyonel hale getirmek oldukça yaygın bir ihtiyaçtır. Özellikle okul, kurum yönetimi veya şirket projelerinde varsayılan admin paneli yeterli gelmez.
1. Django Admin Nedir?
Django Admin, Django’nun otomatik oluşturduğu yönetim panelidir.
Avantajları:
Otomatik CRUD
Kullanıcı yetkilendirme
Model yönetimi
Güvenlik
Admin adresi:
/admin
2. Türkiye İçin Temel Ayarlar
İlk olarak proje ayarlarını Türkiye'ye göre optimize etmeliyiz.
settings.py
LANGUAGE_CODE = 'tr-tr'
TIME_ZONE = 'Europe/Istanbul'
USE_I18N = True
USE_TZ = True
Bu sayede:
Türkçe tarih formatı
Türkçe admin paneli
Türkiye saat dilimi
aktif olur.
3. Admin Panel Başlığını Değiştirme
Django admin başlığı değiştirilebilir.
admin.py
from django.contrib import admin
admin.site.site_header = "Okul Yönetim Sistemi"
admin.site.site_title = "Yönetim Paneli"
admin.site.index_title = "Hoş Geldiniz"
Admin paneli artık şöyle görünür:
Okul Yönetim Sistemi
Yönetim Paneli
Hoş Geldiniz
4. Model Liste Görünümünü Özelleştirme
Varsayılan admin listeleri genelde yetersizdir.
Model
class Ogrenci(models.Model):
ad = models.CharField(max_length=100)
soyad = models.CharField(max_length=100)
numara = models.IntegerField()
sinif = models.CharField(max_length=10)
admin.py
@admin.register(Ogrenci)
class OgrenciAdmin(admin.ModelAdmin):
list_display = ("numara", "ad", "soyad", "sinif")
search_fields = ("ad", "soyad", "numara")
list_filter = ("sinif",)
ordering = ("numara",)
Artık admin paneli:
✔ arama
✔ filtre
✔ sıralama
özelliklerine sahip olur.
5. Türkçe Alan İsimleri
Model alanlarını Türkçeleştirmek için:
class Ogrenci(models.Model):
ad = models.CharField("Ad", max_length=100)
soyad = models.CharField("Soyad", max_length=100)
numara = models.IntegerField("Okul Numarası")
class Meta:
verbose_name = "Öğrenci"
verbose_name_plural = "Öğrenciler"
Admin panelinde artık:
Öğrenciler
Ad
Soyad
Okul Numarası
görünür.
6. Admin Panel Tema Değiştirme
Varsayılan admin teması sade görünür.
Profesyonel projelerde tema kullanılır.
Popüler paket:
Jazzmin
django-jazzmin
Kurulum
pip install django-jazzmin
settings.py
INSTALLED_APPS = [
"jazzmin",
"django.contrib.admin",
]
Sonuç
Admin paneli artık:
modern
responsive
dashboard'lu
bir hale gelir.
7. Dashboard Widget Eklemek
Admin paneline dashboard eklenebilir.
Örnek:
öğrenci sayısı
kitap sayısı
ödünç verilen kitaplar
admin.py
from django.db.models import Count
from .models import Ogrenci
class DashboardView(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
extra_context = extra_context or {}
extra_context['ogrenci_sayisi'] = Ogrenci.objects.count()
return super().changelist_view(request, extra_context=extra_context)
8. Admin Yetki Sistemi
Admin panelini güvenli yapmak gerekir.
Gruplar
Müdür
Öğretmen
Memur
Django bunu hazır sunar.
Admin:
/admin/auth/group
Yetki Örneği
Öğretmen:
✔ öğrenci görebilir
❌ silemez
9. Admin Action Özelliği
Toplu işlem yapılabilir.
Örnek
Toplu öğrenci pasif yapma.
def pasif_yap(modeladmin, request, queryset):
queryset.update(aktif=False)
pasif_yap.short_description = "Seçilen öğrencileri pasif yap"
admin.py
class OgrenciAdmin(admin.ModelAdmin):
actions = [pasif_yap]
10. Admin Formlarını Özelleştirme
Admin formunu düzenleyebiliriz.
class OgrenciAdmin(admin.ModelAdmin):
fieldsets = (
("Kişisel Bilgiler", {
"fields": ("ad", "soyad")
}),
("Okul Bilgileri", {
"fields": ("numara", "sinif")
}),
)
Form artık bölümlere ayrılır.
11. Admin Arayüzünü Tamamen Değiştirmek
İleri seviye projelerde:
Admin template override edilir.
Dizin:
templates/admin/
Örnek:
templates/admin/base_site.html
Örnek Template
{% extends "admin/base.html" %}
{% block branding %}
<h1>Okul Yönetim Sistemi</h1>
{% endblock %}
12. Türkiye’ye Özel Özellikler
Türkiye projelerinde sık kullanılan alanlar:
TC Kimlik No
Telefon
İl
İlçe
Örnek model:
class Personel(models.Model):
tc = models.CharField(max_length=11)
telefon = models.CharField(max_length=15)
il = models.CharField(max_length=50)
ilce = models.CharField(max_length=50)
13. TC Kimlik Doğrulama
Admin panelinde doğrulama yapılabilir.
def clean_tc(self):
tc = self.cleaned_data["tc"]
if len(tc) != 11:
raise forms.ValidationError("TC Kimlik No 11 haneli olmalıdır")
return tc
14. Profesyonel Admin Paketleri
Popüler Django admin paketleri:
| Paket | Amaç |
|---|---|
| Jazzmin | Modern admin |
| django-admin-interface | Tema değiştirme |
| django-import-export | Excel veri aktarımı |
Örnek paket:
django-import-export
15. Excel Import Export
Kurulum:
pip install django-import-export
admin.py
from import_export.admin import ImportExportModelAdmin
@admin.register(Ogrenci)
class OgrenciAdmin(ImportExportModelAdmin):
pass
Artık admin panelinde:
Excel export
Excel import
vardır.
Sonuç
Django Admin'i tamamen profesyonel hale getirebiliriz.
Öğrendiklerimiz:
✔ Türkçeleştirme
✔ Admin görünüm özelleştirme
✔ Dashboard ekleme
✔ Yetkilendirme
✔ Tema değiştirme
✔ Excel entegrasyonu
Şimdi Django için gerçekten SaaS seviyesinde profesyonel admin paneli oluşturmada kullanılan 25 ileri seviye teknik ve kurumsal admin mimarisini anlatacağım. Bu teknikler büyük projelerde (ERP, okul sistemi, CRM vb.) kullanılır.
Django Admin’i SaaS Seviyesine Çıkarmak için 25 Profesyonel Teknik
1. Modern Admin Teması Kullanmak
Varsayılan Django Admin çok basittir.
Profesyonel projelerde tema kullanılır.
Popüler tema:
django-jazzmin
Kurulum:
pip install django-jazzmin
settings.py
INSTALLED_APPS = [
"jazzmin",
"django.contrib.admin",
]
Kazanç:
modern arayüz
sidebar menu
dashboard
responsive tasarım
2. Admin Dashboard Oluşturmak
Admin paneline analitik dashboard eklenir.
Örnek metrikler:
toplam kullanıcı
aktif kullanıcı
satış
sistem logları
Dashboard için paket:
django-admin-tools
3. Admin Menü Yapısını Düzenlemek
Büyük projelerde admin menüsü çok karmaşık olur.
Jazzmin ile menü düzenleme:
JAZZMIN_SETTINGS = {
"topmenu_links": [
{"name": "Ana Sayfa", "url": "admin:index"},
{"name": "Kullanıcılar", "model": "auth.User"},
]
}
4. Admin Grafikler
Dashboard’a grafik eklenir.
Kullanılan paket:
django-admin-charts
Örnek grafikler:
aylık kullanıcı sayısı
satış grafiği
kayıt grafiği
5. Admin Arama Performansı
Büyük veri tabanlarında admin arama yavaşlar.
search_fields = ["ad", "soyad", "email"]
İleri seviye:
search_fields = ["^ad", "^soyad"]
^ = index kullanır.
6. Admin Pagination
Varsayılan sayfa:
list_per_page = 20
Profesyonel projelerde:
list_per_page = 100
7. Admin Otomatik Slug
prepopulated_fields = {"slug": ("baslik",)}
8. Inline Model Kullanmak
Örnek:
Kitap – Yazar ilişkisi
class KitapInline(admin.TabularInline):
model = Kitap
9. Admin Readonly Alanlar
readonly_fields = ("olusturma_tarihi",)
10. Admin Otomatik Kullanıcı Kaydı
def save_model(self, request, obj, form, change):
if not obj.pk:
obj.olusturan = request.user
super().save_model(request, obj, form, change)
11. Soft Delete Sistemi
Profesyonel projelerde veri silinmez.
Model:
is_deleted = models.BooleanField(default=False)
Admin:
def get_queryset(self, request):
return super().get_queryset(request).filter(is_deleted=False)
12. Admin Export Özelliği
Excel export için:
django-import-export
13. Admin CSV Export
import csv
from django.http import HttpResponse
14. Admin Log Sistemi
Django zaten log tutar.
Model:
LogEntry
Ama SaaS sistemlerde ayrıca:
audit log
user activity log
tutulur.
15. Admin Activity Tracking
Paket:
django-simple-history
16. Admin Rate Limit
Admin brute force saldırılarına karşı korunmalı.
Paket:
django-ratelimit
17. Admin IP Restriction
Admin paneli sadece belirli IP'lerden açılır.
Middleware:
if request.path.startswith('/admin'):
18. Admin Two Factor Authentication
Paket:
django-two-factor-auth
19. Admin Custom Filter
class AktifFilter(admin.SimpleListFilter):
20. Admin Bulk Update
actions = ["aktif_yap"]
21. Admin Query Optimizasyonu
list_select_related = ("yazar",)
22. Admin Template Override
Dizin:
templates/admin
Örnek:
base_site.html
23. Admin CSS Eklemek
<link rel="stylesheet" href="/static/admin.css">
24. Admin JavaScript Eklemek
class Media:
js = ("admin.js",)
25. Admin API Entegrasyonu
Admin paneli ile API birlikte çalışabilir.
Örneğin:
admin veri girer
mobil uygulama veriyi kullanır
Bu mimari genelde:
Django REST Framework
Flutter
React
ile kullanılır.
Kurumsal Django Admin Mimarisi
Profesyonel bir Django projesinde admin şu şekilde tasarlanır:
project
│
├── apps
│ ├── users
│ ├── products
│ ├── orders
│
├── admin
│ ├── dashboard
│ ├── reports
│ ├── analytics
│
├── api
│
├── core
│
├── templates
│ └── admin
Profesyonel Admin Dashboard İçeriği
Dashboard genelde şunları içerir:
📊 Günlük kullanıcı sayısı
📊 satış raporu
📊 sistem hataları
📊 yeni kayıtlar
📊 aktif kullanıcılar
Gerçek Dünya Django Admin Kullanımı
Büyük projelerde admin şu amaçla kullanılır:
| Sistem | Kullanım |
|---|---|
| ERP | veri yönetimi |
| Okul sistemi | öğrenci kayıt |
| CRM | müşteri yönetimi |
| E-ticaret | ürün yönetimi |
| SaaS | kullanıcı yönetimi |
Sana Özel Tavsiye
Sen şu konularla ilgileniyorsun:
Django API
Flutter
sistem mimarisi
Bu yüzden sana en faydalı konu:
“Django Admin + API + Mobil uygulama mimarisi”
Yorumlar
Yorum Gönder