Django'da CRUD ilkelerini ve sınıf tabanlı görünümleri kullanarak bir görev yöneticisi uygulamasının nasıl oluşturulacağını öğrenin.

Django'nun temel özelliklerinden biri, CRUD (Oluştur, Oku, Güncelle, Sil) işlemlerinin üzerinde projeler oluşturmaya yönelik yerleşik desteğidir. Django'nun sınıf tabanlı görünümleri, web uygulamaları oluşturmak için hızlı, kolay ve esnek bir yol sağlarken, birçok geliştirici hala işlev tabanlı görünümler kullanıyor.

Sınıf tabanlı görünümler, işlev tabanlı görünümlere göre kalıtım, kod yapılandırma, kodun yeniden kullanılabilirliği ve daha fazlası dahil olmak üzere çeşitli avantajlar sunar. Sınıf tabanlı görünümleri uygulamak biraz karmaşık görünse de bu kılavuz, bir görev yöneticisi uygulaması oluşturarak ve adım adım yönergeler sağlayarak konsepti anlamanıza yardımcı olacaktır.

Django'da Sınıf Tabanlı Görünümler Nelerdir?

Django'da, görünümler Python işlevleri bir web isteği alan ve bir web yanıtı döndüren. Sınıf tabanlı görünümler (CBV'ler), Django'da işlevler yerine Python sınıflarını kullanarak görünümleri tanımlamanın alternatif bir yoludur.

instagram viewer

CBV'lerin daha iyi kod organizasyonu, kodun daha kolay yeniden kullanımı ve mevcut görünümlerin varyasyonlarını oluşturmak için kalıtımı kullanma yeteneği gibi çeşitli avantajları vardır. CBV'ler ayrıca aşağıdakiler gibi yerleşik yöntemler sağlar: elde etmek() Ve postalamak() özel davranışlar için üzerine yazabileceğiniz yöntemler.

Bu makalede kullanılan kod bu makalede mevcuttur. GitHub deposu.

Django'da Kullanılabilen Sınıf Tabanlı Görünümler

Django, nesne listelerini görüntülemek veya yenilerini oluşturmak gibi popüler kullanım durumları için bazı yerleşik CBV'ler sağlar. Bu yerleşik CBV'lerden bazıları şunlardır:

  1. Liste görünümü: Bu görünüm, bir modelden alınan nesnelerin bir listesini oluşturur. Örneğin, bir blogda bulunan tüm gönderileri listeleyen bir sayfa, Liste görünümü.
  2. Detay Görünümü: Bu görünüm, bir modelden alınan tek bir nesnenin ayrıntılı bir görünümünü oluşturur. kullanabilirsiniz Detay Görünümü bir blog uygulamasındaki belirli gönderilerin ayrıntılarını görüntülemek için.
  3. Görünüm Oluştur: Bu görünüm, yeni bir nesne oluşturmak için bir form oluşturur ve form gönderimini işler. Örneğin, bir görev yöneticisi uygulamasında, bu görünümü yeni görevler oluşturmak için kullanacaksınız.
  4. Görünümü Sil: Bu görünüm, bir nesneyi silmek için bir onay sayfası oluşturur ve sayfa silme işlemini gerçekleştirir.
  5. Görünümü Güncelle: Bu görünüm, mevcut bir nesneyi güncellemek için bir form oluşturur ve formun gönderimini işler.

Django, aşağıdakiler de dahil olmak üzere başka görünümler de sağlar: Şablon Görünümü, Yönlendirme Görünümü, Ve Form Görünümü. başvurabilirsiniz Django belgeleri sınıf tabanlı görünümler hakkında ayrıntılı bilgi için.

Django Sınıf Tabanlı Görünümlerle Görev Yöneticisi Uygulaması Derleyin

Görev yöneticisi uygulaması gibi bir uygulama oluşturmak, CRUD işlemlerini CBV'lerle nasıl uygulayacağınızı anlamanıza olanak tanır. Bir görev yöneticisi, kullanıcıların görevleri oluşturmasına, güncellemesine, silmesine ve okumasına izin veren özelliklere sahiptir. Bu özellikler CRUD işlemleriyle uyumludur. Aşağıdaki adımlar, Django CBV'lerle bir görev yöneticisi uygulaması oluşturmanıza yardımcı olacaktır.

Django Projesi Kurma

Django ile bir görev yöneticisi uygulaması oluşturmak için şu adımları izleyerek başlamalısınız:

  1. Django'yu bilgisayarınıza kurun. Python sanal ortamı bu komutla:
    pip kurulumu django
  2. Bir Django projesi oluşturun. Aşağıdaki komut, adlı bir proje yaratacaktır. proje_çekirdeği.
    django-admin startproject proje_çekirdeği.
  3. adlı bir uygulama oluşturun. görev Yöneticisi.
    python manage.py startapp task_manager
  4. senin içinde ayarlar.py uygulama adınızı şuraya ekleyin: INSTALED_APPS liste.
    INSTALED_APPS = [
    'görev Yöneticisi',
    ]
  5. urls.py proje dizininizde dosya oluşturun ve sizin için URL'leri yapılandırın. görev Yöneticisi uygulama:
    itibaren django.urls içe aktarmak yol, dahil

    url kalıpları = [
    yol('', katmak("task_manager.urls")),
    ]

Görev Yöneticisi Uygulamanız için Bir Model Oluşturun

Uygulama dizininizde (veya görev Yöneticisi klasörü), açın modeller.py dosyasını açın ve görev yöneticisi uygulamanız için bir model oluşturun. İşte kullanabileceğiniz örnek bir model:

itibaren django.db içe aktarmak modeller

sınıfGörev(modeller. modeli):
başlık = modeller. CharField (maks_uzunluk=200)
açıklama = modeller. Metin alanı()
tamamlandı = modeller. BooleanField (varsayılan=YANLIŞ)
yaratılmış_at = modeller. DateTimeField (auto_now_add=Doğru)

Modelinizi şu komutla taşıyın:

python manager.py makemigrations && python manage.py göçü

Uygulamanız için bir Django Formu Oluşturun

İşlem için bir formunuz olmalıdır Yaratmak Ve Güncelleme operasyonlar. Uygulama dizininizde, adlı bir dosya oluşturun. formlar.py. İşte bir örnek:

itibaren django içe aktarmak formlar
itibaren .modeller içe aktarmak Görev

sınıfGörev Formu(formlar. ModelFormu):
sınıfMeta:
model = Görev
alanlar = ['başlık', 'Tanım', 'tamamlanmış']

widget'lar = {
'başlık': formlar. Metin Girişi (öznitelikler={'sınıf': 'form kontrolü',}),
'Tanım': formlar. Metin alanı (öznitelikler={'sınıf': 'form kontrolü',}),
'tamamlanmış': formlar. CheckboxInput (öznitelikler={'sınıf': 'form-kontrol girişi'}),
}

Yukarıdaki kod, adında bir sınıfa sahiptir. Görev Formu formun alanlarını ve widget'larını tanımlar. Ayrıca kullanılacak modeli de belirtir.

Her CRUD İşlemi için Django Görünümleri Oluşturun

CBV'lere sahip temel bir CRUD uygulaması, tüm işlemleri etkili bir şekilde gerçekleştirmek için en az dört görünüm gerektirir. Sonraki birkaç adım, bunları nasıl oluşturacağınızı gösterecektir.

Gerekli Modülleri ve Paketleri İçe Aktarın

aç senin görünümler.py dosyasını açın ve aşağıdaki içe aktarmaları yapın:

itibaren django.views.generic içe aktarmak ListView, DetailView, CreateView, UpdateView, DeleteView
itibaren django.urls içe aktarmak ters_tembel
itibaren .modeller içe aktarmak Görev
itibaren .formlar içe aktarmak Görev Formu

Yukarıdaki kod, beş CBV'yi içe aktarır. Ayrıca ithal ediyor ters_tembel bir form gönderiminden sonra kullanıcıyı belirtilen bir URL'ye yönlendirmek için. Son olarak, ithal eder Görev modeli ve Görev Formu daha önce oluşturuldu.

Model Nesnelerini Listelemek için Bir Görünüm Oluşturun

Bir görev yöneticisi uygulamasının, kullanıcı tarafından oluşturulan tüm görevleri listeleyen bir sayfası olmalıdır. Bunun için bir görünüm oluşturmak için kullanmalısınız Liste görünümü. İşte bir örnek:

sınıfGörev Listesi Görünümü(Liste görünümü):
model = Görev
şablon_adı = "task_manager/task_list.html"
bağlam_nesne_adı = 'görevler'

Yukarıdaki görünüm, üç özelliği tanımlar:

  1. modeli: Bu öznitelik, söz konusu görünüm için hangi modelin kullanılacağını tanımlar.
  2. şablon adı: Bu öznitelik, Django'ya tarayıcıya hangi şablonun işleneceğini söyler.
  3. bağlam_nesne_adı: Bu öznitelik, şablonun modeldeki nesneler listesine erişmesine izin veren adı tanımlar.

Çoğu CBV bu üç özelliği içerecektir.

Görev Ayrıntılarını Yönetmek için Bir Görünüm Oluşturun

Bir kullanıcının oluşturduğu her görevin ayrıntılarını gösteren bir sayfası olmalıdır. Bunun üstesinden gelmek için ideal CBV, DetayGörüntü. İşte basit bir örnek:

sınıfGörev Detay Görünümü(Detay Görünümü):
model = Görev
şablon_adı = "task_manager/task_detail.html"

Görev Oluşturma için Görünüm Oluşturma

Yeni görevlerin oluşturulmasını veya eklenmesini işlemek için bir görünüm oluşturun. bu Yaratmak CRUD işlemlerinin bir parçasıdır ve bunun için doğru görüş, Görünüm Oluştur. Nasıl kullanılacağı aşağıda açıklanmıştır:

sınıfGörev Oluşturma Görünümü(Görünüm Oluştur):
model = Görev
form_class = GörevFormu
şablon_adı = "task_manager/task_form.html"
başarı_url = ters_tembel('görev listesi')

Yukarıdaki kod iki yeni özellik sunar: form_class Ve başarı_url.

bu form_class öznitelik, görünüme hangi form sınıfının oluşturulacağını ve işlemleri için kullanılacağını söyler.

bu başarı_url formu gönderdikten sonra kullanıcının nasıl yönlendirileceğini belirtir. Bu kullanır ters_tembel URL yolunun adını alan işlev.

Görevleri Düzenlemek İçin Bir Görünüm Oluşturun

Kullanıcılarınızın görevlerini düzenlemesine veya güncellemesine izin vermek için şuna benzeyen bir görünüm oluşturmalısınız:

sınıfGörev Güncelleme Görünümü(GüncellemeGörünümü):
model = Görev
form_class = GörevFormu
şablon_adı = "task_manager/task_form.html"
başarı_url = ters_tembel('görev listesi')

Yukarıdaki görünüm şuna benzer: Görev Oluşturma Görünümü daha önce oluşturuldu. Tek fark, kullanımıdır. Görünümü Güncelle.

Silme İşlemlerini Yönetmek için Bir Görünüm Oluşturun

Kullanıcılarınızın istedikleri zaman görevleri silmelerine izin vermek için, Görünümü Sil CBV. İşte bir örnek:

sınıfGörevSilmeGörünümü(Görünümü Sil):
model = Görev
şablon_adı = "task_manager/task_confirm_delete.html"
başarı_url = ters_tembel('görev listesi')

Uygulamanızın URL'lerini Yapılandırın

Uygulama dizininizde bir urls.py URL kalıplarınızı şu şekilde dosyalayın ve yapılandırın:

itibaren django.urls içe aktarmak yol
itibaren .Görüntüleme içe aktarmak TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

url kalıpları =
yol('', TaskListView.as_view(), ad='görev listesi'),
yol('yaratmak/', TaskCreateView.as_view(), ad="görev_oluştur"),
yol('görevler//', TaskDetailView.as_view(), ad="görev_detay"),
yol('görevler//update/', TaskUpdateView.as_view(), ad="görev_güncelleme"),
yol('görevler//delete/', TaskDeleteView.as_view(), ad="görev_silme"),
]

Yukarıdaki URL modelleri, işlev tabanlı görünümlerle oluşturulan URL'lere benzer. fark şu ki as_view() her görünüm adının sonuna eklenen işlev.

Yapabilirsiniz URL'ler oluşturmak için Django sümüklü böcekleri kullanın yukarıda kullanılan birincil anahtar yerine.

Görünümleriniz için Şablonlar Oluşturun

Kullanıcılarınızın yukarıdaki görünümlerde tanımlanan eylemleri gerçekleştirmesine izin vermek, etkileşim kurmaları için onlara bir arayüz sağladığınızı gösterir. Daha önce oluşturulan görünümlerden, görev yöneticisi uygulamasının dört kullanıcı arabirimi olmalıdır.

Uygulama dizininizde dört HTML şablonu oluşturun. Ayrıca oluşturmalısınız base.html dosya. Yapabilirsiniz Django şablonlarınıza Bootstrap ile stil verin zaman kazanma.

Görev Listesi Şablonu

Bu şablon, modeldeki tüm görevleri listeleyen kodu içermelidir. Kodun iskelet örneği şudur:

{% 'base.html'yi genişletiyor %}

{% blok içeriği %}
<merkez>
<h1>Görevlerinizh1>
<Ahref="{% url 'task_create' %}">Görev ekleA>
{% görevlerdeki görev için %}
<div>
<div>
<h5>{{ görev.başlık }}h5>
<P>{{ görev.açıklama|kesik karakter sayısı: 50 }}P>
<P>
<güçlü>Tamamlanmış:güçlü>
{% if task.completed %}Evet{% else %}Hayır{% endif %}
P>
<Ahref="{% url 'task_detail' task.pk %}">
Devamını oku
A>
<Ahref="{% url 'task_delete' task.pk %}">
Görevi sil
A>
div>
div>
{% boş %}
<h3>Henüz görev yok.h3>
<Ahref="{% url 'task_create' %}">Görev ekleA>
{% endfor %}
merkez>
{% son blok %}

Bazı Bootstrap sınıflarıyla sayfanızın şöyle görünmesini sağlayabilirsiniz:

Görev Ayrıntı Şablonu

Bu sayfa, oluşturulan her görevin tüm ayrıntılarını göstermelidir. İşte kullanabileceğiniz örnek bir şablon:

{% 'base.html'yi genişletiyor %}

{% blok içeriği %}
<h1>{{ görev.başlık }}h1>
<P>{{ görev tanımı }}P>
<P>Tamamlandı: {% if task.completed %}Evet{% else %}Hayır{% endif %}P>
<Ahref="{% url 'task_update' task.pk %}">Görevi düzenleA>
<Ahref="{% url 'task_delete' task.pk %}">Görevi silA>
{% son blok %}

Stil yaklaşımınıza bağlı olarak sayfanız şöyle görünmelidir:

Görev Formu Şablonu

Bu şablon, kullanıcının bir görev oluşturmasına veya güncellemesine izin veren bir form içermelidir.

{% 'base.html'yi genişletiyor %}

{% blok içeriği %}
<h1>Görev Oluşturh1>
<biçimyöntem="postalamak">
{% csrf_token %}
{{ form.as_p }}
<düğmetip="göndermek">Kaydetmekdüğme>
biçim>
{% son blok %}

Şablon şöyle görünecektir:

Görev Şablonunu Sil

Görevlerin yanlışlıkla silinmesini önlemek için bu şablon bir onay sayfası olmalıdır.

{% 'base.html'yi genişletiyor %}

{% blok içeriği %}
<h1>Silmeyi Onaylah1>
<P>"{{ object.title }}" dosyasını silmek istediğinizden emin misiniz?P>
<biçimyöntem="postalamak">
{% csrf_token %}
<düğmetip="göndermek">Silmekdüğme>
<Ahref="{% url 'task_list' %}">İptal etmekA>
biçim>
{% son blok %}

Bazı Önyükleme ile sayfanız şöyle görünmelidir:

Üretkenliğinizi Artırmak için Sınıf Tabanlı Görünümleri Kullanın

Sınıf tabanlı görünümler, kısa sürede temiz, düzenli kod yazmanın harika bir yoludur ve böylece üretkenliğinizi artırır. Bunları mümkün olduğunca projelerinizde kullanmalısınız. Ayrıca, görev yöneticisi uygulamanızı tam teşekküllü bir işlevsel uygulama haline getirmek için arama işlevi, bildirimler vb. gibi özellikleri daha fazla entegre edebilirsiniz.