Django Model + CRUD Mini Proje
Proje Adı: 🎓 Öğrenci Kayıt Sistemi
Bu projede:
✅ Model oluşturacağız
✅ Listeleme (List)
✅ Ekleme (Create)
✅ Güncelleme (Update)
✅ Silme (Delete)
✅ Bootstrap tasarım
🏗 1️⃣ Proje Oluşturma
django-admin startproject okulproje
cd okulproje
python manage.py startapp ogrenci
⚙ 2️⃣ settings.py Ayarı
INSTALLED_APPS = [
...
'ogrenci',
]
🧠 3️⃣ Model Oluşturma
📁 ogrenci/models.py
from django.db import models
class Ogrenci(models.Model):
ad = models.CharField(max_length=50)
soyad = models.CharField(max_length=50)
yas = models.IntegerField()
numara = models.CharField(max_length=20, unique=True)
kayit_tarihi = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.ad} {self.soyad}"
🔄 4️⃣ Migration
python manage.py makemigrations
python manage.py migrate
🧾 5️⃣ Form Oluşturma
📁 ogrenci/forms.py
from django import forms
from .models import Ogrenci
class OgrenciForm(forms.ModelForm):
class Meta:
model = Ogrenci
fields = '__all__'
👁 6️⃣ Views (CRUD İşlemleri)
📁 ogrenci/views.py
from django.shortcuts import render, redirect, get_object_or_404
from .models import Ogrenci
from .forms import OgrenciForm
# Listeleme
def ogrenci_list(request):
ogrenciler = Ogrenci.objects.all()
return render(request, 'ogrenci/list.html', {'ogrenciler': ogrenciler})
# Ekleme
def ogrenci_create(request):
form = OgrenciForm(request.POST or None)
if form.is_valid():
form.save()
return redirect('ogrenci_list')
return render(request, 'ogrenci/form.html', {'form': form})
# Güncelleme
def ogrenci_update(request, pk):
ogrenci = get_object_or_404(Ogrenci, pk=pk)
form = OgrenciForm(request.POST or None, instance=ogrenci)
if form.is_valid():
form.save()
return redirect('ogrenci_list')
return render(request, 'ogrenci/form.html', {'form': form})
# Silme
def ogrenci_delete(request, pk):
ogrenci = get_object_or_404(Ogrenci, pk=pk)
ogrenci.delete()
return redirect('ogrenci_list')
🌐 7️⃣ URL Yapısı
📁 ogrenci/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.ogrenci_list, name='ogrenci_list'),
path('ekle/', views.ogrenci_create, name='ogrenci_create'),
path('guncelle/<int:pk>/', views.ogrenci_update, name='ogrenci_update'),
path('sil/<int:pk>/', views.ogrenci_delete, name='ogrenci_delete'),
]
📁 okulproje/urls.py
from django.urls import path, include
urlpatterns = [
path('', include('ogrenci.urls')),
]
🎨 8️⃣ Templates
📁 templates/ogrenci/list.html
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Öğrenci Listesi</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="container mt-5">
<h2>Öğrenci Listesi</h2>
<a href="{% url 'ogrenci_create' %}" class="btn btn-success mb-3">Yeni Öğrenci</a>
<table class="table table-bordered">
<tr>
<th>Ad</th>
<th>Soyad</th>
<th>Yaş</th>
<th>Numara</th>
<th>İşlemler</th>
</tr>
{% for ogrenci in ogrenciler %}
<tr>
<td>{{ ogrenci.ad }}</td>
<td>{{ ogrenci.soyad }}</td>
<td>{{ ogrenci.yas }}</td>
<td>{{ ogrenci.numara }}</td>
<td>
<a href="{% url 'ogrenci_update' ogrenci.id %}" class="btn btn-warning btn-sm">Güncelle</a>
<a href="{% url 'ogrenci_delete' ogrenci.id %}" class="btn btn-danger btn-sm">Sil</a>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
📁 templates/ogrenci/form.html
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Öğrenci Form</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="container mt-5">
<h2>Öğrenci Formu</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary">Kaydet</button>
</form>
</body>
</html>
🚀 9️⃣ Projeyi Çalıştır
python manage.py runserver
Tarayıcıda:
http://127.0.0.1:8000/
📊 Bu Projede Öğrendiklerin
✔ Model oluşturma
✔ Migration
✔ ModelForm
✔ CRUD mantığı
✔ URL – View – Template bağlantısı
✔ Bootstrap tablo tasarımı
Yorumlar
Yorum Gönder