@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
UYGULAMA KATMANI
- Statik veri: Web sunucusu veya uygulama tarafından doğrudan cevaplanabilir.
- Fonksiyonel veri: HTTP isteğindeki parametrelerin bir hesaplamaya tabi tutulması ile üretilir.
- 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
- Sistemin geçmişten gelen durum bilgisini bellekte tutamayız
- Uygulama durumunu saklamamız için geliştirilmiş özel yazılımlar
- 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,098