Bloğa geri dön

Django Modelleri Oluşturma: Bir Eğitim

Django Modelleri Oluşturma: Bir Eğitim

Django, güvenli ve bakımı kolay web sitelerinin ve web uygulamalarının hızlı bir şekilde geliştirilmesi için tanınmış bir web çerçevesidir. Python kullanılarak oluşturulan Django, web geliştirmeyi basitleştirerek her seferinde tekerleği yeniden icat etmek zorunda kalmadan uygulamalar yazmaya daha fazla zaman ve odaklanma sağlar. Django, sağlam resmi belgelere, harika topluluk desteğine ve çok sayıda ücretsiz ve ücretli desteğe sahip ücretsiz ve açık kaynaklı bir projedir.

Bu kılavuzda, Django modelleri oluşturmaya derinlemesine dalacağız. Django'da bir model verileriniz hakkındaki temel bilgi kaynağıdır. Modeller, saklanacak verilerin alanlarını ve davranışlarını tanımlar. Django, ORM (Object Relational Mapping - Nesne İlişkisel Eşleme) kullanarak veritabanı tablolarını oluşturmak için modeli kullanır; bunlara da model denir.

Gereksinimler

Unix tabanlı bir işletim sistemi üzerinde çalışıyoruz, tercihen Ubuntu 20.04 bulut sunucusu test ettiğimiz sistemdir. Django'yu benzer bir ortamda kurmak istiyorsanız, lütfen şu eğitimimize bakın: “Ubuntu 20.04 Üzerinde Django Nasıl Kurulur ve Geliştirme Ortamı Nasıl Ayarlanır.”

Adım 1. Python Geliştirme Ortamı

Django, Python üzerine kurulmuştur. Bu nedenle, Python uygulamalarıyla çalışmak için gerekli tüm araçlara sahip sağlam bir Python geliştirme ortamına ihtiyacımız var. Bunu daha önce özel bir kılavuzda ele almıştık. Burada kısa bir gösterim yapacağız.

İlk olarak, bir terminal açın ve aşağıdaki komutları çalıştırın:

Ardından, pip – Python paket yöneticisini kurun:

Ardından, bazı ek geliştirme paketlerini kurun:

Django Models 1

Sanal bir ortam oluşturmak için Python venv modülüne de ihtiyacımız var:

Adım 2. MySQL Sunucusunun Kurulması

MySQL, popüler bir ilişkisel veritabanı yönetim sistemidir. Açık kaynaklı, kararlı ve zengin özelliklere sahiptir. Django uygulamamız için veritabanı sunucusu olarak MySQL kullanacağız. APT kullanarak MySQL'i kurun:

Ardından, kurulumu doğrulayın:

Django Models 2

Bu, varsayılan seçeneklerle MySQL'in yalnızca temel bir kurulumudur. Daha derinlemesine bilgi için şu kılavuza göz atın: MySQL kurulumu ve yapılandırması.

Adım 3. Django Uygulamasının Kurulması

Artık Django uygulamamızı oluşturmaya hazırız. Django'nun daha derinlemesine bir gösterimiyle ilgileniyorsanız, lütfen şu eğitimimize bakın: “Ubuntu 20.04 Üzerine Django Web Çerçevesinin Kurulması.”

Ardından, uygulama için özel bir dizin oluşturun. Dizin adı proje adını yansıtmalıdır:

Proje dizini içinde, venv modülünü kullanarak bir Python sanal ortamı oluşturun:

Sanal ortamı etkinleştirin:

Django Models 3

Şunu kullanarak Django'yu kurun: pip:

Ardından, django-admin komutunu kullanarak yeni bir Django projesi oluşturun:

django-admin

Adım 4. Django Uygulamasının Yapılandırılması

Django uygulaması tüm varsayılan yapılandırmaları içerir. Amacımız için bazı ayarlamalar yapmamız gerekiyor.

Yapılandırma dosyasını düzenleyerek başlayın: settings.py:

Ardından, saat dilimini değiştirin:

TIME_ZONE

Django uygulama sunucusuna erişmesine izin verilen makineleri ekleyin:

ALLOWED_HOSTS

Bundan sonra, değişiklikleri uygulayın:

Django Models 4

Son olarak, Django web uygulamamız için bir süper kullanıcı oluşturun:

python manage.py

Adım 5. Django Uygulamasını MySQL'e Bağlama

MySQL'e bağlanmak için Django ile uyumlu ek bir Python bağlayıcı kütüphanesine ihtiyacımız var. Şunu kullanacağız: mysqlclient.

İlk olarak, gerekli paketlerin kurulu olduğundan emin olun:

python3-dev

Ardından, şunu kurun: mysqlclient:

  • Özel Bir Veritabanı Oluşturma

Uygulamamız için özel bir veritabanı ve veritabanı kullanıcısı oluşturmamız gerekiyor. MySQL kabuğunu şu şekilde başlatın: root:

sudo mysql -u rootDjango uygulamamız için özel bir veritabanı oluşturun:

Ardından, Django uygulaması için özel bir veritabanı kullanıcısı oluşturun:

Son olarak, özel kullanıcıya özel veritabanı üzerinde tam yetki verin:

GRANT ALL ON
  • Django Yapılandırmasını MySQL Kullanacak Şekilde Değiştirme

Şimdi, MySQL'i veritabanı sunucusu olarak kullanabilmesi için bazı Django yapılandırmalarını düzenlememiz gerekiyor. Bir metin düzenleyicide settings.py dosyasını açın:

Aşağı kaydırarak şu bölüme gelin: DATABASES ve aşağıdaki kodu yapıştırın:

DATABASES

Ardından, gerekli veritabanı kimlik bilgilerini içermesi için MySQL yapılandırma dosyasını düzenleyin:

Dosyanın sonuna aşağıdaki bloğu ekleyin:

Django Models 5

Değişikliklerin geçerli olması için MySQL'i yeniden başlatın:

Adım 6. Django Modeli Oluşturma

Artık Django projemiz içinde yeni bir model oluşturmaya hazırız. Sanal ortamı etkinleştirin:

Bu konumda, Django'ya yeni bir uygulama oluşturmasını söyleyin:

Oluşturduktan sonra, dosya ağacı şuna benzer görünmelidir. Burada, models.py dosyası özel Django modelimiz için kodları içerecektir:

Django Models 6

Dosyanın mevcut içeriğini kontrol edin:

cat models.py

Gösterim amacıyla, Post adında blog gönderileri için bir model oluşturacağız. Aşağıdaki alanları içerecektir:

  • title: Blog gönderisi başlığı.
  • slug: Web sayfaları için geçerli URL'ler depolar ve oluşturur.
  • content: Blog gönderisi metni.
  • created_on: Gönderinin oluşturulma tarihi.
  • author: Gönderiyi oluşturan kullanıcı.

Bir metin düzenleyicide models.py dosyasını açın:

Modelimiz için gerekli bazı API'leri içe aktaralım. Varsayılan olarak, models API'sini içe aktarır. Ayrıca slug oluşturmak için slugify API'sine, kimlik doğrulama için User modeline ve daha iyi ve esnek bir URL oluşturma için reverse fonksiyonuna ihtiyacımız olacak:

Ardından, Post adında sınıfı ekleyin. Bu sınıf, şu gibi gerekli veritabanı alanlarını içerecektir: title, slug, content, created_on, ve author:

URL oluşturma ve gönderiyi kaydetme işlevselliğine ihtiyacımız var. Benzersiz gönderilerle eşleşen benzersiz bağlantılar oluşturduğu için bu önemlidir:

Bir sonraki bölüm, modele gönderiyi sıralama ve web sayfasında görüntüleme talimatını verecektir. Mantığı dahili bir sınıf kullanarak kodlayacağız, Meta. Bu sınıf, veritabanı alanı tanımını ilgilendirmeyen ek model mantığı içerecektir:

Son olarak, bu dosyada Comment modelinin özelliğine sahip olacağız. Bu, Comment sınıfını models.Model imzasını kullanarak eklemeyi gerektirir. Aşağıdaki veritabanı alanlarını içerecektir:

  • name: Yorum yapanın adı.
  • email: Yorum yapanın e-posta adresi.
  • text: Yorumun kendi içeriği.
  • post: Yorumun yapıldığı gönderi.
  • created_on: Yorumun oluşturulma zamanı.

Kod şuna benzer görünecektir:

Bu noktada, models.py dosyamız şu şekilde görünecektir:

models.py

Son olarak, dosyayı kaydedin ve düzenleyiciyi kapatın.

Adım 7. Django Ayarlarını Güncelleme

Model oluşturuldu. Ancak, modeli harekete geçirmek için bazı yapılandırma dosyalarında ince ayar yapmamız gerekiyor. settings.py dosyasının içinde, modelimizi INSTALLED_APPS.

Bir metin düzenleyicide settings.py dosyasını açın:

Yeni modülü şu bölümün altına kaydedin: INSTALLED_APPS:

INSTALLED_APPS

Dosyayı kaydedin ve düzenleyiciyi kapatın.

Adım 8. Değişiklikleri Taşıma (Migration)

İstediğimiz tüm modelleri eklediğimize göre, bir sonraki adım bu değişiklikleri uygulamaktır. Django bu şemaları MySQL veritabanımıza uygulayacaktır.

Aşağıdaki komut gerekli tüm taşıma (migration) dosyalarını oluşturacaktır. Çıktı, bu dosyaların proje dizini içindeki konumlarını gösterecektir:

makemigrations

Aşağıdaki komut mevcut tüm taşımaları listeleyecektir:

Django Models 6

Şu hariç tüm taşımaların işaretlendiğini unutmayın: 0001_initial (bu, Post ve Comment modellerinin bir parçası olarak oluşturulmuştu).

Aşağıdaki komut, Django'nun taşımaları gerçekleştirmek için hangi SQL sorgusunu yürüteceğini gösterecektir:

sample_app

Şimdi tek yapmamız gereken taşımaları uygulamaktır. Bu taşımalar değişiklikleri veritabanına yazacaktır:

migrate

Step 9. Verifying Changes

Değişiklikleri doğrulamak için MySQL veritabanımıza bir göz atalım. MySQL kabuğunu Django kullanıcısı olarak başlatın:

Ardından, mevcut aktif veritabanını Django uygulaması veritabanı olarak değiştirin:

Veritabanındaki tüm tabloları listeleyin:

Son olarak, tablolardan herhangi birinin içeriğini görmek için DESCRIBE sorgusunu kullanın:

Django Models 7

MySQL ile Django Sınırlamaları

Django uygulamanız için veritabanı sunucusu olarak MySQL kullanırken aklınızda bulundurmanız gereken birkaç şey vardır:

  • Şema değiştiren süreçler etrafındaki transaction (işlem) desteği oldukça sınırlıdır. Yani, bir migrasyon başarısız olursa, başka bir migrasyonu denemeden önce tüm değişikliklerin manuel olarak geri alınması gerekir. Başarısız migrasyonun gerçekleşmediği daha önceki bir noktaya geri dönmenin hiçbir yolu yoktur.
  • Şema değiştiren süreçlerin çoğu için MySQL tabloları tamamen yeniden yazar. Belirli durumlarda bu gerçekten zaman alıcı olabilir. En kötü ihtimalle, zaman karmaşıklığı eklenecek satır sayısı veya kaldırılacak sütun sayısı ile orantılı olacaktır. Resmi Django belgelerine göre, milyon satır başına bir dakika sürebilir.
  • MySQL; sütun, tablo ve dizin adlarının uzunlukları için bir karakter sınırı uygular. Ayrıca tüm sütunların ve dizin kapsamlarının toplam boyutu üzerinde de bir sınır vardır. Django bu sınırın üzerine çıkabilir. MySQL dışındaki bazı arka uçlar Django'nun bu daha yüksek sınırını destekleyebilir.

Bu nedenle, seçeneklerinizi tartmanız ve uygun olanı seçmeniz önemle tavsiye edilir.

Son Düşünceler

Bu kılavuz, mevcut bir Django uygulamasına modüllerin nasıl ekleneceğini başarıyla göstermektedir. Uygulama için arka uç olarak MySQL kullandık. Ayrıca modeller, migrasyonun nasıl çalıştığı ve Django'nun modelleri MySQL veritabanı tablolarına nasıl dönüştürdüğü gibi bazı temel Django kavramlarını da sergilemektedir.

Keyifli Çalışmalar!

author

Hark Labs

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.