Django ve python dünyasına benim gibi yeni başlayanlar için aşina olmadıkları bazı bilgiler

Merhaba arkadaşlar forumda ve django dünyasında yeniyim ve öğrenirken (bu arada hala öğrenmeye devam ediyorum) zorluk yaşadığım, anlam vermekte zorlandığım nihayetinde fikir sahibi olduğum bazı komutlar ve işlevleri hakkında kısa bilgiler vermeye çalışacağım. Umarım forum yöneticileri ve konu ile alakalı diğer arkadaşlar yanlışım var ise cevaplayarak beni düzeltirler.

Redirect fonksiyonu nedir ve nasıl kullanılır?

Django’da redirect() fonksiyonu, kullanıcıyı belirtilen URL’ye yönlendirmek için kullanılır. İşlevi şu şekildedir:

  • Kullanıcı bir sayfayı talep ettiğinde, sunucu tarafından belirli bir işlem gerçekleştirilir.
  • Bu işlem sonucunda, kullanıcının yönlendirilmesi gereken bir başka sayfa olabilir.
  • redirect() fonksiyonu, bu yönlendirme işlemini gerçekleştirmek için kullanılır.

redirect() fonksiyonunun kullanımı şu şekildedir:

from django.shortcuts import redirect

def my_view(request):
# Yönlendirme işlemi
return redirect('hedef-url')

Yukarıdaki örnekte:

  • my_view adlı bir view fonksiyonumuz olduğunu varsayalım.
  • redirect() fonksiyonunu kullanarak hedef-url olarak adlandırılan hedef URL’ye yönlendirme yapıyoruz.

hedef-url, projenizde tanımlanmış bir URL deseni veya URL’nin tamamı olabilir. Örneğin, hedef-url şeklinde bir URL desenine veya "http://example.com/some-page/" şeklinde tam bir URL’ye yönlendirme yapılabilir.

redirect() fonksiyonu ayrıca URL deseni yerine view fonksiyonunu da alabilir. Örneğin:

from django.shortcuts import redirect
from . import views

def my_view(request):
# Başka bir view fonksiyonuna yönlendirme
return redirect(views.another_view)

Yukarıdaki örnekte another_view adlı başka bir view fonksiyonuna yönlendirme yapılmaktadır.

redirect() fonksiyonu, kullanıcının tarayıcısına bir 302 Redirect yanıtı döndürerek yönlendirme işlemini gerçekleştirir. Bu, kullanıcının tarayıcısının otomatik olarak belirtilen URL’ye yönlendirilmesini sağlar.

Bu şekilde, redirect() fonksiyonunu kullanarak Django’da yönlendirme işlemlerini gerçekleştirebilirsiniz.

Request Nedir?

request (istenilen veya talep edilen) objesi, Django’da view fonksiyonlarına geçirilen ve istemci tarafından sunucuya gönderilen HTTP isteğiyle ilgili bilgileri içeren bir nesnedir. request objesi, bir dizi özellik ve yöntem içerir ve bu özellikler ve yöntemler, HTTP isteğiyle ilgili bilgilere erişmek ve işlemek için kullanılır.

request objesi, aşağıdaki gibi bazı yaygın özelliklere sahiptir:

    • request.method: İstek yöntemini (GET, POST, vb.) temsil eden bir metin dizesi.
    • request.GET: GET parametrelerini içeren bir sözlük nesnesi.
    • request.POST: POST verilerini içeren bir sözlük nesnesi.
    • request.FILES: Dosya yüklemelerini içeren bir sözlük nesnesi.
    • request.session: İstemciye özgü oturum verilerini içeren bir nesne.
    • request.user: Oturum açmış kullanıcıyı temsil eden bir nesne.
    • request.path: İstek URL’sinin yolu (path) bilgisini temsil eden bir metin dizesi.
    • request.META: HTTP isteğiyle ilişkili meta bilgilerini içeren bir sözlük nesnesi.

Bunlar sadece request nesnesinin bazı özelliklerindendir ve birçok başka özelliği ve yöntemi daha vardır. Bu özellikler ve yöntemler, view fonksiyonları içinde kullanılarak istemci tarafından gönderilen istekle ilgili bilgileri elde etmek ve işlemek için kullanılır. Örneğin, request.method özelliği, istemcinin hangi HTTP yöntemini (GET, POST, vb.) kullandığını belirlemek için kullanılabilir.

Ayrıca, request objesi, middleware’ler ve dekoratörler gibi Django’nun diğer bileşenleri tarafından da kullanılabilir. Middleware’ler, request objesine erişerek isteği işlemek veya değiştirmek için kullanılırken, dekoratörler view fonksiyonlarını saran işlevlerdir ve request objesini alarak isteği işlemek veya kontrol etmek için kullanılabilir.

Bu şekilde, request objesi, Django’da HTTP isteğiyle ilgili bilgilere erişmek ve işlemek için kullanılan önemli bir bileşendir.

Def komutu nedir?

Django’da def komutu, Python dilindeki fonksiyon tanımlamak için kullanılan bir sözcüktür. Django, web uygulamaları geliştirmek için kullanılan bir Python web çerçevesidir ve Python dilinin birçok özelliğini kullanır.

def komutunun Django’daki kullanımı şu şekildedir:

def my_view(request):

# Fonksiyon gövdesi
# HTTP isteği işleme, veri tabanı işlemleri ve diğer işlemler burada yapılabilir
return HttpResponse("Hello, Django!")

Yukarıdaki örnekte my_view isimli bir fonksiyon tanımlanmıştır. Bu fonksiyon, bir Django view (görünüm) fonksiyonudur ve HTTP isteklerini işlemek için kullanılır. request parametresi, gelen HTTP isteğini temsil eder.

Django’da def komutunu kullanarak fonksiyonlar tanımlayabilir ve bu fonksiyonlar aracılığıyla web uygulamanızın işlevselliğini oluşturabilirsiniz. Fonksiyonlar, istekleri işleyebilir, veritabanı işlemleri gerçekleştirebilir, şablonları render edebilir ve daha fazlasını yapabilir.

Render nedir?

Django’da render fonksiyonu, bir HTML şablonunu kullanarak HTTP yanıtını oluşturmak için kullanılan bir fonksiyondur. Bu fonksiyon, Django’nun template (şablon) sistemiyle entegre çalışır ve dinamik içerik üretmek için şablonları veriyle birleştirir.

render fonksiyonunun kullanımı şu şekildedir:

from django.shortcuts import render

def my_view(request):
# Verilerin hazırlanması
context = {
‘name’: ‘John’,
‘age’: 30
}

# Şablonun render edilmesi
return render(request, 'myapp/my_template.html', context)

Yukarıdaki örnekte, render fonksiyonu bir HTTP isteğini temsil eden request parametresini ve render edilecek şablonun adını (myapp/my_template.html) alır. Ayrıca, şablona veri sağlamak için context adlı bir sözlük de kullanılır.

render fonksiyonu, belirtilen şablona veriyle birlikte işlenmiş bir HTTP yanıt döndürür. Şablon içinde, veriye erişmek ve dinamik içerik oluşturmak için Django’nun template dilini kullanabilirsiniz. Bu sayede, veritabanından alınan verileri, form bilgilerini veya diğer dinamik içerikleri şablonlarınızda kullanabilirsiniz.

render fonksiyonu, Django’nun temel HTTP yanıtlarından biri olan HttpResponse nesnesini otomatik olarak oluşturur ve döndürür. Bu nesne, kullanıcıya gönderilecek olan HTML içeriğini ve diğer HTTP yanıt bilgilerini içerir.

my_template.html dosyasının içeriği, Django template diline uygun bir şekilde hazırlanmalıdır. Django template dilinde, dinamik içeriği temsil etmek için özel etiketler ve ifadeler kullanılır. İşte basit bir my_template.html örneği:

My Template

Merhaba, {{ name }}!

Yaşınız: {{ age }}

Yukarıdaki örnekte, {{ name }} ve {{ age }} ifadeleri, context sözlüğünden gelen değerlere karşılık gelir. Bu ifadeler, şablonda yerlerine geçecek verileri temsil eder.

Django template dilinde çeşitli etiketler, filtreler ve kontrol yapıları da kullanabilirsiniz. Bu sayede, dinamik içeriği daha karmaşık şekillerde oluşturabilirsiniz. Örneğin, döngüler, koşullu ifadeler, form işleme ve daha fazlası için özel etiketler mevcuttur.

Önemli olan, my_template.html dosyasının Django template diline uygun olarak hazırlanması ve render fonksiyonu tarafından işlenebilecek şekilde olmasıdır.

Foruma katılma amacım hem kendi kazanımlarımı kaybetmemek adına yazılı hale getirip kaydetmek hem de bu bilgilerden benim gibi kavrama problemi çeken diğer arkadaşların bundan istifade etmesini sağlamak. Türkçe kaynak noktasında büyük problemler çeken ve maalesef yabancı kaynaklarla arası kötü olan bizlere paylaşmak noktasında bir nebze faydalı olacağını düşündüğüm her şeyi paylaşmaya gayret edeceğim.

1 Beğeni

Bunları bir repoya atıp orada güncellemeler yaparsanız hem github’ınız dolu görünür hem de güncellenen notlara insanlar daha kolay ulaşım sağlar. Küçük bir öneri.
Kolay gelsin

2 Beğeni

Yazılım dünyasında daha çok yeniyim, github hesabı açtım ama henüz paylaşım yapma fırsatım olmadı. Önümde çok uzun bir yol var biliyorum sadece github gibi platformlarda Türkçe kaynak aşırı kısıtlı olduğu için yerinin orası olmadığını düşünmüştüm ama dediğiniz gibi projeleri paylaşma açısından olmazsa olmaz yapıya sahip sanırım. Dediğinizi dikkate alacağım, ilerleyen zamanlarda hem öğrendiklerimi burada paylaşıp hem de kaynak dosyalarını github sayfamdan kontrol edilebilmesi için buraya taşıyacağım.

Hangi kaynaktan bahsediyorsunuz? Github zaten bu amaçla kullanılmıyor.

Bilgi için teşekkürler bunu da öğrenmiş oldum

1 Beğeni