Django 3 Admin Paneli ve Veritabanı

Django’nun bize sağladığı en büyük kolaylıklarından biri olan admin paneline değineceğiz. Djngo admin panelimizi yayınlar oluşturmak ve yönetmek için kullanacağız.

Öncelikle terminalimizde django admin paneline giriş yapmak için bir yetkili kullanıcı oluşturalım.

python manage.py createsuperuser

E-posta, şifre ve kullanıcı adı girmeniz istenir. Güvenlik kaygıları için Parola’nın görünmeyeceğini unutmayın.

Bundan sonra sunucumuzu yeniden çalıştıralım .

python manage.py runserver

Admin paneli adresine gidelim http://127.0.0.1:8000/admin/ ve django admin panelimizin giriş sayfasına geldik, oluşturduğumuz kullanıcı bilgileri ile giriş yapalım. Giriş yaptıktan sonra karşımıza gruplar ve kullanıcılar adında temel bir yönetim paneline gelmiş oluyoruz.

Django 3 admin paneli

Veritabanı Oluşturma

Django veritabanı işlemlerini bizim için kendi sağlıyor. Şimdi biz bloğumuza gönderileri yayınlayabilmek için kullanacağız.

Blog uygulamamızın içindeki models.py gelip, kodları ekleyelim.

from django.db import models
from django.contrib.auth.models import User
STATUS = (
    (0,"Draft"),
    (1,"Publish")
)
class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now= True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title

title: Gönderimizin başlığı.
slug: URL kısmında gözükecek olan yazı.
author: Yazıyı yayınlayan yazar.
ve geriye kalan kısım ise oluşturma ve güncelleme tarihleri olmuş oluyor. Bunları eklediğimizde model dosyamızda değişiklik yaptığımız için şunları yapalım;

python manage.py migrate

python manage.py makemigrations

işlemlerini yapınca güncellemelerimizi yapmış olduk.

Admin Paneline Post Modülünü Ekleme

Admin panelinde işlemlerimizi yapmamız için veritabanına eklediğimiz post modülünü django admin panelimize ekleyelim.

Django blog uygulamamızın içindeki admin.py dosyasının içine şu kodları ekleyelim.

from django.contrib import admin
from .models import Post


class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'status', 'created_on')
    list_filter = ("status",)
    search_fields = ['title', 'content']
    prepopulated_fields = {'slug': ('title',)}


admin.site.register(Post, PostAdmin)

Modelde eklediğimiz title, slug, status vb. modülümüzü bu kısımda django admin panelimize tanıtıyoruz.

ve urls.py dosyamıza da şu şekil güncellememizi getirelim;

from . import views
from django.urls import path

urlpatterns = [
    path('', views.PostList.as_view(), name='home'),
    path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
]

şuan her şey yolunda fakat elimizde hala bir tamplate yok. Proje klasörümüzün içine templates diye bir klasör oluşturalım ve bunu settings.py dosyamızdaki app kısmına tanıtalım. App kısmındaki dirs yazan dizin şu şekil olsun;

'DIRS': [os.path.join(BASE_DIR, 'templates')],

Ve artık templates klasörümüzü tanıtmış olduk. Şimdi orayı doldurma zamanı.

Bir sonraki yazıda anlatacağım fakat sabırsız arkadaşlar için proje dosyalarını github adresimden alıp inceleyebilirler.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir