Django-Admin Komutlari Nasil Oluşturulur?

Herkese merhabalar,

Django projesi ile çalışırken python manage.py ile başlayarak makemigrations, migrate, runserver vb.) gibi komutlar kullanıyoruz, peki kendi komutumuzu oluşturabilir miyiz ?

Tabii ki evet. 🙂 Django bize komut oluşturmamız için gerekli bir yapı sunmaktadır. Birlikte bu yapıyı inceleyelim.

Çok basit bir örnek ile başlayalım.

django-admin startproject CommandExample
python manage.py startapp example
  • Öncelikle django projemiz altına belli bir klasör yapısı kurmamız gerekiyor.
django commands, django komutları

İlk olarak oluşturduğumuz bir app altına management klasörü açmalıyız ve altına commands klasörü açmalıyız. __init__.py dosyalarını unutmayalım tabi ki.

  • Commands klasörü altına describe_project adında bir python dosyası oluşturuyoruz. Bu dosya adı manage.py ile kullanacağımız komut adı olacak.
django commands, django komut olusturma
Project Structure

Gelelim koda 🙂

# descrıbe_project.py
from django.core.management.base import BaseCommand


class Command(BaseCommand):

    def handle(self, *args, **options):
        print("""
            Project Name: Example Project For Django Command \n
            Hello Furkanozkaya.com Readers            
        """)

Basit bir işlem yaptığımızdan dolayı oldukça basit bir kod yapımız var. Burada dikkat edilmesi gereken Command class’ının adının değiştirilememesi ve BaseCommand class’ından kalıtım almasıdır.

Django komutları ile neler yapabiliriz?

  • Basitçe yaptıgımız gibi proje hakkında bilgi verebiliriz.
  • Default olarak veritabanına veri ekleme işlemleri yapabiliriz.
  • Projede ayrıca çalıştırılması gereken scriptlerin tetiklenmesi veya benzeri işlemleri yapabiliriz.

Django Admin komutu ile Ekrana Renkli Yazı Nasıl Yazdırılır ?

self.stdout.write(self.style.SUCCESS("furkanozkaya.com"))

SUCCESS, WARNING, ERROR, NOTICE vb.) gibi birçok renk çeşidi bulunmaktadır.

django komutlari renkli cikti

Kaynaklar:

Django Docs

Add a Comment

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