@houseofappsinfo

Django ile Web Teknolojilerine Giriş

KADER SUCUK

@sucuklufasulye

WEB KATMANLARI

  • Web projelerinin genel amacı HTTP isteklerini HTTP cevaplarına dönüştürmektir.
  • Bu iletişim en kaba hali ile uygulamanızın çalıştığı makine ile dünyanın kalanı arasında olur.

WEB SUNUCUSU

  • Gelen HTTP isteklerini inceleyip hangi uygulamaya gitmesi gerektiğine karar vermek
  • O uygulamayı çağırmak ve uygulamadan gelen cevabı istemciye geri yollamak
  • Sabit dosyaları sunmak
  • URL'yi yereldeki bir dosya sistemi yolu ile eşleştirir
  • HTTP portlarını dinleyecek, gerektiğinde SSL ile güvenliği sağlayacak ve istekleri asıl ilgili olan uygulamaya yönlendirecek bir ara katman
  • Sık kullanılanları: Apache, Nginx ve Microsoft IIS

Örnek Uygulama için Nginx ayarları

server {
    listen 80;
    server_name abc.com;

    client_max_body_size 20M;

    location /admin {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:///home/www-data/abc.com/abc/abc.sock;
        root /home/www-data/abc.com/abc;
    }

    location / {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:///home/www-data/abc.com/abc/abc.sock;
        root /home/www-data/abc.com/abc;
    }

    location /static {
        root /home/www-data/abc.com/abc;
    }

    location /uploads {
        root /home/www-data/abc.com/abc;
    }

    location /api {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass unix:///home/www-data/abc.com/abc/abc.sock;
        root /home/www-data/abc.com/abc;
    }
}

Uygulama İletişim Protokolleri

  • FastCGI ve WSGI
  • Python projeleri Python standartlarınca belirtilen WSGI'yi kullanır
  • Eğer uygulamanızı doğrudan FastCGI, WSGI veya HTTP destekleyecek şekilde yazarsanız uygulamanızı başlatıp web sunucusunu uygulamanıza yönlendirmeniz yeterli olur.

Peki, sürekli erişilebilir olmayı nasıl sağlayacağız?

UYGULAMA SUNUCUSU

  • Uygulamayı belirtilen parametrelerle başlatmak
  • Ölürse tekrar başlatmak
  • Loglama
  •  PHP-FPM ve uWSGI

UYGULAMA KATMANI

  1. Statik veri: Web sunucusu veya uygulama tarafından doğrudan cevaplanabilir. 
  2. Fonksiyonel veri: HTTP isteğindeki parametrelerin bir hesaplamaya tabi tutulması ile üretilir.
  3. Durumsal veri: HTTP isteğindeki parametreler ve sistemin geçmişte yaptığı işlemlerin sonuçlarının birleştirilmesi ile üretilir. 

Uygulamanın istekle ne yapacağı projenin ihtiyaçlarıyla ilgilidir ve her proje için baştan değerlendirilir

VERİTABANI

 

  1. Sistemin geçmişten gelen durum bilgisini bellekte tutamayız 
  2. Uygulama durumunu saklamamız için geliştirilmiş özel yazılımlar
  3. PostgreSQL, MySQL, Redis, MongoDB, Memcached

DJANGO FRAMEWORK

Django, Python ile yazılmış özgür bir web uygulama iskeletidir (framework). Bir web iskeleti, websitesi geliştirmeyi hızlandıran ve kolaylaştıran bileşenlerden oluşur. MVC mimari bakışı ile geliştirilmiştir.

HTTP İsteği

Django URLresolver → Django View → Veritabanı→ Django View → HTTP Cevabı

DJANGO PROJEMİZ

mkdir djangogirls
cd djangogirls
python3 -m venv myvenv
source myvenv/bin/activate
pip install django==1.10
django-admin startproject mysite .

Ayarları değiştirme

../settings.py

TIME_ZONE = 'Europe/Istanbul'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
python manage.py migrate
python manage.py runserver
http://127.0.0.1:8000/
http://localhost:8000/

Modeller

  • Nesneye yönelik programlama
  • Amaç herşeyi/işi programlama komutları ile yapmak yerine şeyleri modelleyip birbirleri ile nasıl etkileşime geçeceklerini belirmektir.
  • Nesne nedir? Özelliklerin ve hareketlerin bütünüdür diyebiliriz.

python manage.py makemigrations

python manage.py migrate

Url Tanımları

View Katmanı

Template Katmanı

Nasıl Öğrenebilirim?

  • İstihza

https://belgeler.yazbel.com/python-istihza/

  • http://www.diveintopython.net/
  • https://stackoverflow.com
  • Bir editör seçin

https://www.jetbrains.com/pycharm/

http://www.sublimetext.com/2

  • https://www.djangoproject.com/start/
  • http://www.django-rest-framework.org/

Django Girls

Django Girls

https://djangogirls.org/

https://tutorial.djangogirls.org/tr/

TEŞEKKÜRLER :)

Web teknolojileri ve djangoya giriş

By Kader Sucuk

Web teknolojileri ve djangoya giriş

  • 1,095