Kendi Blog Uygulamanı Yap: 6 Adımda Flask Projesi (Başlangıç)

Projeyle Öğrenme

Kendi Blog Uygulamanı Yap: 6 Adımda Flask Projesi (Başlangıç)

Projeyle Öğrenme
4 dk okuma süresi
Bu yazıda Flask ile adım adım basit bir blog uygulaması kurmanın temel adımları, proje yapısı, veritabanı entegrasyonu ve temel güvenlik önlemleri açıklanıyor.
Kendi Blog Uygulamanı Yap: 6 Adımda Flask Projesi (Başlangıç)

Giriş

Bu rehber, Flask mikroframework'ünü kullanarak basit ve öğretici bir blog uygulamasını 6 adımda kurmanıza yardımcı olacak. Hedef, "projeyle öğrenme" yaklaşımıyla temel kavramları pratikte göstermek: geliştirme ortamı, rota ve şablon yapısı, veritabanı, kimlik doğrulama hakkında temel bilgiler ve dağıtım hazırlığı. Flask'ın nasıl hafif ve esnek bir yapı sunduğuna dair resmi dökümantasyona göz atabilirsiniz.

Flask hakkındaki ayrıntılı örnek ve adımları resmi kılavuzda da bulabilirsiniz: Flask Documentation — Tutorial.

Neden Flask?

Flask, minimal bir çekirdek ve kolay genişletilebilir yapısıyla, küçük ve orta ölçekli projeler için hızlı prototipleme sağlar. Öğrenmesi, Python bilgisi olan geliştiriciler için hızlıdır ve resmi eğitim materyalleri adım adım bir blog örneği sunar. Daha fazla detay için resmi dokümantasyona bakabilirsiniz: Flask tutorial.

Hazırlık: Gerekli araçlar

  • Python 3.8+ (yerel makinada kurulu olmalı)
  • Sanal ortam yönetimi: Python'un virtual environment (venv) önerilir
  • Bir metin editörü veya IDE: VS Code örnekleri için bakabilirsiniz: Flask Tutorial in Visual Studio Code
  • Basit projeler için SQLite yeterli; ileride SQLAlchemy tercih edilebilir

Kısa komut örnekleri (terminal): sanal ortam oluşturma ve Flask yükleme için genelde şu adımlar kullanılır: python -m venv venv, ardından venv/bin/activate (veya Windows'ta venv\Scripts\activate) ve pip install Flask.

6 Adımda Basit Blog Uygulaması

1) Proje yapısını oluşturun

Temel bir yapı şu şekilde olabilir:

  • myblog/
    • app/ (uygulama paketiniz)
    • app/templates/ (HTML şablonları)
    • app/static/ (CSS, JS, resimler)
    • venv/ (sanal ortam)
    • run.py veya wsgi.py

Bu düzen, geliştirme ve üretim yapılandırmalarını ayırmayı kolaylaştırır ve test yazmayı basitleştirir.

2) Basit uygulama ve rotalar

En basit haliyle bir uygulama dosyası oluşturun (örneğin app/__init__.py) ve Flask uygulamasını başlatın. Uygulamanın temel rotaları şunlar olur:

  • Anasayfa: yayınlanan blog gönderilerini listeler
  • Gönderi görüntüleme: tek bir içeriği gösterir
  • Yeni gönderi oluşturma: form ile içerik ekler

Geliştirme sırasında debug modunu kullanmak hızlı geri bildirim sağlar, ancak üretimde kapatılmalıdır. Resmi öğreticide rota ve küçük uygulama örnekleri adım adım açıklanmıştır: Flask tutorial.

3) Şablonlar ve statik içerikler

Flask, Jinja2 şablon motorunu kullanır. HTML dosyalarınızı templates/ içinde tutun; CSS ve JS dosyalarınızı ise static/ klasöründe saklayın. Jinja ile değişkenler ve kontrol yapıları kullanarak dinamik sayfalar oluşturabilirsiniz.

Örnek: bir gönderi listesi şablonu, her gönderinin başlığını ve kısa önizlemesini döngüyle gösterecektir. Şablon mantığıyla görüntüyü ayrıştırmak, uygulama mantığını temiz tutar.

4) Veritabanı entegrasyonu

Basit projelerde SQLite sık kullanılır; daha sağlam ORM için SQLAlchemy tercih edilebilir. SQLAlchemy kullanımı ve model tanımlama, veritabanı tablolarını Python sınıflarıyla yönetmeyi sağlar. Resmi ve topluluk kaynakları veritabanı entegrasyonu için iyi örnekler sunar: Flask ve Veritabanları — Python Beginners.

Temel model yapısı şöyle tasarlanır: her gönderi için bir id, başlık, içerik ve oluşturulma zamanı alanları olur. Uygulamayı başlatmadan önce veri tabanını oluşturmak için bir başlatma komutu veya Flask CLI kullanabilirsiniz.

5) Kimlik doğrulama ve içerik yönetimi

Kullanıcı girişi ve yetkilendirme gerekiyorsa, üçüncü taraf uzantılar projenizi hızla olgunlaştırır. Örneğin oturum yönetimi ve oturum gerektiren rotalar için yaygın uzantılar bulunmaktadır; bu yaklaşım, kullanıcı kaydı, giriş ve yetkili işlemler için uygundur. Uzantı seçimi ve uygulama ayrıntıları için ilgili dökümantasyonları inceleyin.

6) Test etme, güvenlik ve dağıtım hazırlığı

Geliştirme sırasında Flask'ın test istemcisi ile işlevsel testler yazabilirsiniz. Basit testler, kritik rota akışlarını ve form işleme mantığını kontrol eder. Güvenlik için dikkat edilmesi gereken başlıca konular:

  • Form verilerinde XSS korunması (şablonlarda otomatik kaçış mekanizmalarını kullanın).
  • CSRF saldırılarına karşı korunma (formlar için token kullanımı veya Flask-WTF gibi uzantılar).
  • Girdi doğrulaması ve izin kontrolleri.

Üretime alırken WSGI sunucuları (ör. gunicorn) ve ters proxy (ör. Nginx) kombinasyonu yaygındır. Ayrıca konteyner tabanlı dağıtım (Docker) projeyi taşınabilir yapar.


Kontrol Listesi (Hızlı)

  • Sanal ortam kuruldu ve Flask yüklendi.
  • Proje yapısı (app/, templates/, static/) oluşturuldu.
  • Temel rotalar (index, view, create) çalışıyor.
  • Veritabanı ve modeller tanımlandı, ilk veri eklendi.
  • Basit testler yazıldı ve çalıştırıldı.
  • Güvenlik temel önlemleri uygulandı (XSS/CSRF kontrolleri).

Yaygın Sorunlar ve Çözümler

  • Uygulama başlatılmıyorsa: sanal ortamın aktif olduğundan ve bağımlılıkların yüklü olduğundan emin olun.
  • Veritabanı bağlantı hataları: yanlış yol veya izin problemleri kontrol edilmeli; SQLite dosya izinleri sık görülen bir nedendir.
  • Form verileri görünmüyorsa: şablonlarda doğru alan adlarını kullandığınızdan ve CSRF korumasının formu engellemediğinden emin olun.

Sonraki Adımlar

  • Arama ve etiketleme ekleyin (basit filtreleme ile başlayın).
  • Markdown destekli içerik düzenleyici entegre edin.
  • Resim yükleme ve medya yönetimi ekleyin.
  • Performans için önbellekleme stratejileri üzerinde çalışın.

Kaynaklar ve İleri Okuma

Bu rehber, Flask ile bir blog projesine başlamak için gereken adımları ve dikkat edilmesi gereken temel noktaları özetler. Resmi dökümantasyonlar, yapılandırma ve güvenlik konularında daha derinlemesine bilgi sağlar.