Web geliştirme için Django görünümü nasıl oluşturulur?

0 Hisse senetleri
0
0
0
0

giriiş

Django geliştirme serimizi takip ediyorsanız, yönetici ayrıcalıklarına sahip kullanıcıların Django yönetici arayüzü panosu üzerinden yorum ve gönderi eklemelerine olanak tanıyan bir Django uygulamasını başarıyla oluşturmuşsunuzdur. Ayrıca, Django'nun Nesne İlişkisel Eşleme çözüm modelleri ve MySQL kullanarak veri kalıcılığını da ayarlamışsınızdır.

Bu eğitimde, web uygulamamızın web isteklerini düzgün bir şekilde işlemesini ve gerekli web yanıtlarını döndürmesini sağlayan Django görünümleri (views) oluşturacağız. Django belgelerinde tanımlandığı gibi, bir web yanıtı bir web sayfasının HTML içeriği, bir yönlendirme veya bir HTTP hatası (örneğin, 404) olabilir. Görünüm işlevlerinin kodu, Python yolunuzda olduğu sürece teknik olarak projenizin herhangi bir yerinde bulunabilir. Ancak, bu görünüm işlevlerini içeren dosyayı adlandırmak ve yerleştirmek için bazı genel kurallar vardır ve bu adımları izleyeceğiz.

Bu eğitimdeki adımları tamamladığınızda, Django blog siteniz IP'nize veya alan adınıza/gönderi URL'nize son bir gönderiyi çekecektir.

Ön koşullar

Bu eğitim Django Geliştirme serisinin bir parçasıdır ve bu serinin devamıdır.

Eğer bu seriyi takip etmiyorsanız, şu varsayımlarda bulunuyoruz:

  • Django sürüm 4 veya üzerini yüklediniz.
  • Django uygulamanızı bir veritabanına bağladınız.
  • Unix tabanlı bir işletim sistemiyle çalışıyorsunuz, tercihen Ubuntu 22.04 bulut sunucusunu tercih edin, çünkü test ettiğimiz sistem bu.
  • Django yönetim arayüzünüzü kurdunuz.

Bu rehber esas olarak Django görünümleriyle ilgilendiğinden, farklı bir kurulumunuz olsa bile takip edebilirsiniz.

Adım 1 – Görüntüleme işlevlerini oluşturun

Terminalinizde öncelikle ilgili dizine gitmeniz ve Python sanal ortamınızı etkinleştirmeniz gerekecektir. Bu seriyi takip ettiyseniz, aşağıdaki komutları girebilirsiniz. Kodunuzun doğru ayarlarla çalıştığından ve korunduğundan emin olmak için uygulamanızı geliştirirken her zaman Python programlama ortamını kullanmanız önemlidir.

cd ~/my_blog_app
. env/bin/activate

Artık sanal ortamınız aktif olduğuna göre, sitenin blog dizinine gidelim, burada bir Python dosyası açalım ve ilk view fonksiyonumuzu oluşturalım.

cd ~/my_blog_app/blog/blogsite

views.py dosyasını nano veya tercih ettiğiniz metin düzenleyicisini kullanarak düzenlemeye açın.

nano views.py

Dosyayı açtığınızda aşağıdakine benzer bir kodla doldurulması gerekiyor:

from django.shortcuts import render
# Create your views here.

django.shortcuts kütüphanesinden render() fonksiyonunu içe aktaran import ifadesini tutuyoruz. render() fonksiyonu, uygun HttpResponse nesnesini döndürmek için hem bir şablonu hem de bir metni birleştirmemizi sağlar. Bunu aklınızda bulundurun çünkü yazdığımız her görünümde HttpResponse'u örneklendirmek, doldurmak ve döndürmekten sorumluyuz.

Ardından, kullanıcıları dizin sayfasına karşılayan ilk görünümümüzü ekleyeceğiz. Django http kütüphanesinden HttpResponse() fonksiyonunu içe aktaracağız. Bu fonksiyonu kullanarak, web sayfası istendiğinde görüntülenecek bir metin göndereceğiz.

from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, welcome to the index page.')

Daha sonra eğitimde oluşturacağımız bireysel gönderileri görüntüleyen başka bir fonksiyon ekliyoruz.

...
def individual_post(request):
return HttpResponse('Hi, this is where an individual post will be.')

Views.py dosyamızın son hali şu şekilde olacak.

from django.http import HttpResponse
from django.shortcuts import render
def index(request):
return HttpResponse('Hello, welcome to the index page.')
def individual_post(request):
return HttpResponse('Hi, this is where an individual post will be.')

Dosyayı düzenlemeyi bitirdiğinizde kaydedip çıkmayı unutmayın. Nano'da CTRL ve X'e, ardından Y'ye ve ardından ENTER'a basabilirsiniz.

Şu anda bu işlevlerin işaret ettiği belirli bir URL yok, bu yüzden URL yapılandırma dosyamızdaki URL kalıpları bloğuna eklememiz gerekiyor. Görünümler eklendikten sonra, oluşturduğumuz sayfaları görüntüleyebilmek için bu yapılandırma dosyası aracılığıyla URL'leri bunlara eşleyelim.

Adım 2 – Görünümlere URL'leri Göster

Django ile uygulamamızda kullanmak üzere kendi URL'lerimizi tasarlayabiliriz. Bu, genellikle URLconf veya "URL yapılandırma" dosyası olarak adlandırılan bir dosya kullanılarak saf Python'da yapılır.

Bir web sayfasını görüntülemek için Django, öncelikle kullanılacak kök URLconf modülünü belirlemeli, ardından tüm URL kalıplarını içeren bir liste veri yapısı olan URL kalıplarını aramalıdır. Django daha sonra ilk eşleşmeyi bulana kadar her URL kalıbını inceler. Bir eşleşme bulunduğunda, Django ilişkili görünümü bulur ve bu görünüm işlevi URL kalıbı ve bir HttpRequest nesnesi için verileri alır. Bu işlemin herhangi bir noktasında bir hata oluşursa, bunun yerine bir hata işleme görünümü görüntülenir.

Bu bölümde uygulamamızın iki farklı dizininde bulunan iki farklı urls.py dosyasıyla çalışacağız.

~/my_blog_app/blog/blogsite dizinine ulaştığınızda, urls.py dosyasını (URLconf dosyanız olarak da bilinir) düzenlemek için açın. Burada dosyayı düzenlemek için nano'yu kullanacağız.

nano urls.py

Aşağıdaki dosyadaki gibi urlpatterns listesi olacak şekilde dosyayı düzenleyin.

from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('post/', views.individual_post, name='individual_post')
]

Yukarıdaki satırları eklemeyi bitirdiğinizde dosyayı kaydedip kapatın.

Blog dizini URLconf dosyasını güncellediğimizde, onu blog dizini URLconf'a koyarız, aksi takdirde tanınmaz. Bunu yapmamızın nedeni, yapılandırma dosyamızda ROOT_URLCONF olarak ayarlanmış olmasıdır. Bu, Django'nun URL kalıpları için blog dizini URLconf'a bakacağı anlamına gelir.

Blog URLconf'unuzu blog URLconf'unuza eklemek için o dizine gitmeniz gerekir.

cd ~/my_blog_app/blog/blog

Oraya vardığınızda URLconf dosyasını nano veya tercih ettiğiniz başka bir metin düzenleyicisiyle açabilirsiniz.

nano urls.py

Bu dosyaya, ikinci satırda gösterilen, az önce üzerinde çalıştığımız /blogsite/urls.py dosyasını eklemek için aşağıdaki satırları ekliyoruz.

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blogsite.urls'))
]

Dosyayı kaydedip kapatın.

Şimdi bir web tarayıcısı açıp oluşturduğumuz URL'lere gidelim ve görünümlere eklediğimiz metni görüntülediklerini doğrulayalım. Django uygulamasını sağlayan manager.py dosyasına erişmek için üst dizine gitmemiz gerekiyor.

cd ..

Aşağıdaki komutu çalıştırın. 0.0.0.0 yerine aşağıdaki IP adresinizi yazabilirsiniz.

python manage.py runserver 0.0.0.0:8000

Web tarayıcınızda IP adresinize, 8000 portuna gidin:

your-server-ip:8000

Aşağıdakine benzer bir web sayfasıyla karşılaşacaksınız:

Daha sonra şu adrese gidin:

your-server-ip:8000/post/

Buradan aşağıdaki web sayfası görüntülenmelidir:

Artık iki urls.py dosyasının çalıştığını ve verilerin tam olarak beklediğimiz şeyi gösterdiğini doğruladığımıza göre, blogumuza biraz gerçek veri ekleyelim.

Adım 3 – Bir blog yazısı oluşturun

Artık URL desenlerinin ve görünümlerinin nasıl çalıştığına dair temelleri anladığınıza göre, bir blog yazısı ekleyelim ve Python dosyalarında kodladığımız metin yerine bunu bir web sayfasında görüntüleyelim.

Daha önce kurduğumuz yönetici sayfası üzerinden bir gönderi oluşturacağız. Sunucunuz Django uygulamasını çalıştırırken, bir web tarayıcısı kullanarak aşağıdaki adresteki blog yönetici sayfasına gidin:

your-server-ip:8000/admin/blogsite/

Arayüzde, veritabanını örnek bir blog yazısıyla doldurmak için Yazılar satırında bulunan + Ekle bağlantısına tıklayın.

Bağlantıya tıkladığınızda aşağıdaki gibi bir giriş formuna ulaşacaksınız:

Bir gönderi eklemek istediğinizde, bunu yapmak için bu sayfaya gidin. Alternatif olarak, düzenleme bağlantısını kullanarak gönderileri düzenleyebilirsiniz.

Formda aşağıdaki alanları düzenleyebilirsiniz:

  • Başlık: İstediğiniz blog yazısı başlığını buraya ekleyin, örneğin İlk Blog Yazım.
  • SLUG: Bu, URL'nin, insanlar tarafından okunabilir anahtar kelimelerle geçerli bir web adresi öğesini tanımlayan kısmını ifade eder. Genellikle sayfa başlığından alınır, bu durumda my-first-blog-post ifadesini kullanabiliriz.
  • İÇERİK: Bu, blog yazınızın metnidir. Bu örnek için sadece Merhaba Dünya! ekleyeceğiz, ancak burada biraz daha ayrıntıya girebilirsiniz.
  • YAZAR: Adınızı veya kullanıcı adınızı buraya ekleyin. Sami kullanacağız.

Test amacınıza uygun gördüğünüz şekilde blog yazısı formunu doldurun.

Örnek verileri sayfaya ekledikten sonra KAYDET düğmesine tıklayın. Aşağıdaki onay sayfasını göreceksiniz:

Tebrikler! İlk blog yazınızı oluşturdunuz!

Daha sonra yönetim arayüzüne girdiğimiz verileri içeren bir satırın MySQL veritabanına eklendiğini kontrol edelim.

Adım 4 – Veritabanı Verilerinin Görüntülenmesi

Bu noktada MySQL'e gitmemiz gerekiyor, bu yüzden terminalde CTRL + C tuşlarına basarak mevcut sunucu işlemini durdurun ve ardından MySQL yorumlayıcınızı açın. Django uygulama veritabanımız için kullanıcımız djangouser, ancak projeniz için uygun kullanıcıyı kullandığınızdan emin olun.

mysql -u djangouser

MySQL istemine ulaştığınızda blog_data veritabanına (veya projeniz için uygun olan herhangi bir veritabanına) gidin:

use blog_data;

Daha sonra blogsite_post tablosunun içeriğini görüntüleyin.

select * from blogsite_post;

Aşağıdakine benzer bir çıktı alacaksınız; bu çıktıda yönetici arayüzüne eklediğiniz bilgiler görüntülenecektir.

Output
+----+--------------------+--------------------+---------------+----------------------------+--------+
| id | title | slug | content | created_on | author |
+----+--------------------+--------------------+---------------+----------------------------+--------+
| 1 | My First Blog Post | my-first-blog-post | Hello, World! | 2020-05-14 00:30:03.186564 | Sammy |
+----+--------------------+--------------------+---------------+----------------------------+--------+
1 row in set (0.00 sec)

Çıktıda görüldüğü gibi, eklediğimiz gönderi verilerini içeren bir satır var. Şimdi bu verileri gönderiler için görüntüleme fonksiyonuna referanslayalım. MySQL yorumlayıcısından çıkmak için CTRL + D tuşlarını kullanın.

Sitenizin blog uygulamasında views.py dosyasının bulunduğu yere gidin.

cd ~/my_blog_app/blog/blogsite

Şimdi dosyayı açalım ve yeni bilgilerimizi ekleyelim.

nano views.py

Dosyayı aşağıdaki gibi düzenleyin.

from django.shortcuts import render
from django.http import HttpResponse
from .models import Post
def index(request):
return HttpResponse('Hello, welcome to the index page.')
def individual_post(request):
recent_post = Post.objects.get(id__exact=1)
return HttpResponse(recent_post.title + ': ' + recent_post.content)

Yukarıdaki kodda, Post için ek bir içe aktarma ifadesi ekledik. Ayrıca, tırnak içindeki dizeyi HttpResponse'dan kaldırıp blog yazısı verilerimizle değiştirdik. Belirli bir nesnenin verilerine başvurmak için, görüntülemek istediğimiz nesneyle ilişkili blog yazısı kimliğini kullanır ve bu kimliği last_post adlı bir değişkende saklarız. Ardından, alana nokta ayırıcı ekleyerek nesneden belirli alanları alabiliriz.

Dosyayı kaydedip kapattıktan sonra, Django uygulamasını çalıştırmak için manager.py dosyasının bulunduğu yere gidin.

cd ~/my_blog_app/blog
python manage.py runserver 0.0.0.0:8000

Bir web tarayıcısından aşağıdaki adrese gidin:

your-server-ip:8000/post/

Burada yaptığımız değişiklikleri göreceğiz. Sayfa, gönderiye eklediğiniz metni gösterecek şekilde buna benzer görünecek.

Sayfayı incelemeyi bitirdiğinizde terminalde CTRL + C tuşlarına basarak yürütme işlemini durdurabilirsiniz.

Geliştirme ortamınızı devre dışı bırakmak için disable komutunu yazıp sunucudan çıkış yapabilirsiniz.

Sonuç

Bu eğitimde blog yazısı veritabanımızdan bir web sayfasında görünümler oluşturduk, URL kalıplarını eşleştirdik ve metinleri görüntüledik.

Bir sonraki eğitimde, HTML kullanarak daha estetik bir Django şablonunun nasıl oluşturulacağı ele alınacak. Şimdiye kadar bu seride Django modelleri ve Django görünümleri ele alındı. Şablonlar, bir Django uygulamasının temeli söz konusu olduğunda son önemli kısımdır.

Bir yanıt yazın

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

Ayrıca Şunları da Beğenebilirsiniz