Python ile bir web sitesi kurmak için genelde Django, Flask gibi çatılardan biri kullanılır. Çatı kullanmasanız da olur ama bu durumda çatıların size sağladığı birçok kolaylıktan faydalanamazsınız ve birçok işlevi kendinizin kodlaması gerekir.
Sanal Ortamın Kurulumu
Django'yu bilgisayarınıza kurmadan önce sanal ortam oluşturmalıyız. Bunun için öncelikle terminali açalım. Ardından aşağıdaki komut ile web sitemiz için bir sanal ortam oluşturalım.
Linux yüklü bilgisayarda:
python -m pip install virtualenv
Windows yüklü bilgisayarda:
Komut istemcisi "cmd" yönetici yetkisiyle açıldıktan sonra:
pin install virtualenv
Sanal ortam kurulduktan sonra web sitemizin dosyalarını koyacağımız dizini oluşturmalıyız. Örneğin aşağıda linux yüklü bilgisayarda "/var/www/html/" dizininde (Windows yüklü bilgisayarda D:\ sürücüsü) içerisinde "djangositesi" adlı bir dizin oluşturuyorum.
Linux yüklü bilgisayarda:
cd /var/www/html/ mkdir djangositesi
Windows yüklü bilgisayarda:
D: mkdir djangositesi
Şimdi bu dizinin içerisinde sanal bir ortam oluşturalım. Bunun için önce dizinin içerisine girelim ve "env" adlı bir ortam oluşturalım. Bu ortama siz başka bir isim de verebilirsiniz.
Linux ve Windows yüklü bilgisayarda:
cd djangositesi virtualenv env
Bu komut "djangositesi" dizini içerisinde "env" adlı bir dizin oluşturacaktır. Bu ortamı etkin hale getirmek için aşağıdaki komutu çalıştıralım.
Linux yüklü bilgisayarda:
source env/bin/activate
Windows yüklü bilgisayarda:
cd env cd scripts activate cd .. cd ..
(Not: İleride ortamı kapatmak için deactivate
komutunu çalıştırmanız yeterlidir.)
Bu komut çalıştırılınca oluşturduğumuz "env" ortamının adı parantez içinde yazılı olarak "(env)
" şeklinde görülüyorsa sanal ortamımız başarıyla oluşturulmuş ve etkinleştirilmiştir.
Django'nun Kurulumu
Django'yu kurmak için öncelikle Python sürümünün 3.6 ve üzeri olduğundan emin olalım. Python sürümünü görmek için aşağıdaki kod çalıştırılır.
python --version
Şimdi ise Django çatısını bilgisayarımıza aşağıdaki komut sayesinde kuralım.
python -m pip install django
Django çatısının bilgisayarımıza kurulduğundan emin olmak ve versiyonunu görmek için aşağıdaki komut kullanılır.
python -m django version
Yaşasın. Artık bilgisayarımıza Django'yu da kurmuş olduk.
Bir Web Sitesinin Oluşturulması
Bir uygulamayı (örneğin bir web sayfasını) oluşturmak için oluşturduğumuz "(env)
" ortamı aktif iken ve yine oluşturduğumuz "djangositesi" dizini içerisindeyken aşağıdaki komut çalıştırılır. Bu komut ile örneğin "ilksitem" adlı bir uygulama oluşturuyorum.
django-admin startproject ilksitem
Bu komut sayesinde "ilksitem" adında bir dizin oluşacaktır. Bu dizinin içinde ise "manage.py" adlı bir dosya ve yine "ilksitem" adlı (içerisinde çeşitli python dosyalarının olduğu) bir dizin bulunacaktır. Bu sayede "ilksitem" adlı uygulamamızın iskeletini oluşturmuş olduk.
- "settings.py" dosyası çeşitli ayarları yaptığımız dosyadır.
- "urls.py" dosyası websitemizdeki çeşitli sayfaların url adreslerini barındırır.
- "ilksitem" uygulamamızın adıdır.
- Web sitesi içinde oluşturacağımız her bir uygulamanın (ör. web sayfasının) ayrı bir ismi olmalı ve örneğimizdeki "ilksitem" dizininin içerisinde bulunmalıdır.
Şimdi henüz içi boş olan web sitemizi görelim. Bunun için aşağıdaki komutu çalıştıralım.
python manage.py runserver
Bu komut çalıştırıldıktan sonra terminalde görülen "Starting development server at http://127.0.0.1:8000/" ifadesiyle sunucunun çalıştığı ve web sitemize http://127.0.0.1:8000/ adresinden ulaşabileceğimiz belirtilmektedir. Herhangi bir tarayıcının adres çubuğuna bu adresi kopyalayarak web sitemizi görüntüleyebiliriz.
Öntanımlı "8000" numaralı port yerine başka bir portun kullanılmasını istiyorsak (Ör. 8080 numaralı port) aşağıdaki şekilde bunu belirtebiliriz.
python manage.py runserver 127.0.0.1:8080
Sunucuyu kapatmak için terminal aktif iken CTRL+C
tuşlarına basmak yeterlidir.
Ayarlar Dosyası: settings.py
Şimdi "ilkstem" dizini içindeki "settings.py" dosyasının içeriğini anlamaya çalışalım ve ihtiyacımız olan bazı ayarları yapalım.
BASE_DIR
: Projenin/web sitesinin bulunduğu dizini gösterir.SECRET_KEY
: Sunucu ile istemci arasındaki iletişimde kullanılacak şifre anahtarıdır.DEBUG
: "True" değeri aldığında sitede oluşacak hatalar gösterilirken "False" değeri aldığında bu hatalar gösterilmez. Site yayına geçtiği zaman "False" haline getirmek gerekir.ALLOWED_HOSTS
: Yayın yapılacak adresleri belirtmemize yarar. ŞimdilikALLOWED_HOSTS=["127.0.0.1"]
olarak değiştirebiliriz.ROOT_URLCONF
: Öntanımlı olarak yazan "ilksitem.urls" ifadesiyle web sitemizdeki URL adreslerinin "ilksitem" dizini içindeki "urls.py" dosyasında kaydedildiğini belirtir.DATABASES
: Kullanılan veritabanları tanımlanır. Bu kısımdaki URL'den diğer veritabanlarına ait kalıplara da ulaşabilirsiniz.AUTH_PASSWORD_VALIDATORS
: Web sitemizdeki şifrelerin büyük harf ve küçük harf içermesi, en az 8 karakterli olması, bir sayı içermesi gibi özelliklerin kontrol edilmesini sağlar.LANGUAGE_CODE
: Web sitesinin dilini belirtir. Öntanımlı olarak "en-us" değeri almaktadır. Türkçe içeriğe sahip bir web sitesi yapacaksanız bunun değerini "tr" olarak değiştirmelisiniz.TIME_ZONE
: Bulunulan zaman dilimini belirtir ve öntanımlı değeri "UTC" şeklindedir. Türkiye'deki ziyaretçiler hedeflenmekte ise bunun değerini "Europe/Istanbul" yapmanızı tavsiye ederim.
Yönetim Dosyası: manage.py
"manage.py" dosyası ile çalışabilmek için öncelikle bir süper kullanıcı oluşturmamız gerekir. Sunucuyu açık ise terminal aktif iken CTRL+C
tuşlarına basarak sunucuyu kapatalım. Ardından terminalde djangositesi/ilksitem
dizinine gidelim ve aşağıdaki iki kodu çalıştıralım.
python manage.py migrate python manage.py createsuperuser
Bizden istenen süper kullanıcı adı olarak, örneğin, "admin" yazalım, e-posta adresimizi yazalım ve belirlediğimiz şifre politikasına uygun bir şifre belirleyelim. Ardında aşağıdaki şekilde sunucuyu çalıştıralım.
python manage.py runserver
Yukarıdaki kodun çıktısında yer alan "http://127.0.0.1:8000/" adresine süper kullanıcı adımızı da ekleyelim. Örneğimizde oluşan "http://127.0.0.1:8000/admin" adresini kullandığımız tarayıcıya yapıştırarak "admin" sayfasını açabiliriz.
Sayfa Yolları Dosyası: urls.py
URL, ziyaret edilen bir web sayfasının adresidir. Örneğin https://www.egitimportali.com/konu-anlatimlari/ ve http://127.0.0.1:8000/admin adresleri birer URL'dir. urls.py
sayesinde web sitemizden istenilen sayfaların hangi görüntüleme (view) safyası ile ilişkilendirileceği belirtilir. Örneğin "urls.py" içerisinde yer alan aşağıdaki
urlpatterns = [ path('admin/', admin.site.urls), ]
Web Sitesi İçinde Bir Uygulamanın Oluşturulması
Sitemizin iskeletini oluşturduktan sonra artık bir örnek uygulama oluşturmak için aşağıdaki komutu kullanabiliriz. Tabii önce projenin/web sitesinin dizininin (örneğimizde /var/www/html/djangositesi/
veya D:\djangositesi\
dizini) içerisinine girmemiz lazım.
python manage.py startapp ilksayfam
Bu komut sayesinde "ilksitem" dizininin yanına "ilksayfam" adlı bir dizin oluşturacak ve bu dizinin içinde de çeşitli python dosyaları bulunacaktır.
Oluşturduğumuz bu "ilksayfam" sayfasının ziyaretçiler tarafından ulaşılabilmesi için daha önce oluşturduğumuz iskelete tanıtmamız gerekir. Bunun için "ilksitem" dizininin yanındaki "ilksayfam" dizininin (yani örneğimizde /var/www/html/djangositesi/ilksayfam/
veya D:\djangositesi\ilksayfam\
dizini) içerisindeki "views.py" dosyasını herhangi bir yazı düzenleyicisi (text editor) ile açalım. Dosya ilk açıldığında işçinde aşağıdaki satırlar yer almaktadır.
from django.shortcuts import render # Create your views here.
Bu "views.py" dosyanın içini aşağıdaki hale getirelim ve dosyayı kaydedip kapatalım. Yazdığımız bu satırlar sayesinde sitemizin ziyaretçisi "ilksayfam" sayfasını görüntüleme isteğinde (request) bulunduğunda biz ziyaretçiye "Uğur ola!" şeklinde bir yanıt (response) dönmüş oluyoruz. Bu yanıtı istediğiniz şekilde ve html kodları vs. kullanarak daha da zengin hale getirebilirsiniz. "def" ile tanımladığımız "index" fonksiyonunun altındaki "return" satırının önüne aşağıdaki şekilde "tab" tuşu kullanarak girinti koymayı unutmayın.
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): return HttpResponse("Uğur ola!")
Ardından yine "ilksayfam" klasöründe "urls.py" adında bir dosya oluşturalım ve içine aşağıdaki satırları yazalım.
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
Şimdi ise "ilksayfam" sayfasının yolu tanıtmak için "ilksitem" klasöründeki "urls.py" dosyasını açalım ve içine aşağıdaki şekilde eklemeler yapalım. Bu sayede ziyaretçilerden gelen görüntülemek isteklerinin (request) hangi python kodlarına yönlendirileceğini belirtmiş oluyoruz.
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('ilksayfam/', include("ilksayfam.urls")), ]
Artık hazırladığımız sayfayı görüntüleyebiliriz. Aşağıdaki komutu kullanarak sunucuyu çalıştıralım.
python manage.py runserver
Ardından tarayıcımızı açalım ve http://127.0.0.1:8000/ilksayfam/ adresine gidelim. Ekranda "Uğur ola!" yazıyorsa ilk sayfanızı oluşturdunuz demektir. Tebrikler.
Web Sitesinin Ana Sayfasının Oluşturulması
Sitemizin ana sayfasını da yukarıda anlatılan "ilksayfam" sayfasına benzer şekilde oluşturulabilir. Bunun için hâlihazırda mevcut bulunan "ilksitem" dizininin içerisinde "views.py" dosyasını oluşturalımherhangi bir yazı düzenleyicisi (text editor) ile açalım. Dosya ilk açıldığında işçinde aşağıdaki satırlar yer almaktadır.
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): return HttpResponse("Burası ana sayfa.")
Bu "views.py" dosyanın içini aşağıdaki hale getirelim ve dosyayı kaydedip kapatalım. Yazdığımız bu satırlar sayesinde sitemizin ziyaretçisi "ilksayfam" sayfasını görüntüleme isteğinde (request) bulunduğunda biz ziyaretçiye "Uğur ola!" şeklinde bir yanıt (response) dönmüş oluyoruz. Bu yanıtı istediğiniz şekilde ve html kodları vs. kullanarak daha da zengin hale getirebilirsiniz. "def" ile tanımladığımız "index" fonksiyonunun altındaki "return" satırının önüne aşağıdaki şekilde "tab" tuşu kullanarak girinti koymayı unutmayın.
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def index(request): return HttpResponse("Uğur ola!")
Ardından yine "ilksayfam" klasöründe "urls.py" adında bir dosya oluşturalım ve içine aşağıdaki satırları yazalım.
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
Şimdi ise "ilksayfam" sayfasının yolu tanıtmak için "ilksitem" klasöründeki "urls.py" dosyasını açalım ve içine aşağıdaki şekilde eklemeler yapalım. Bu sayede ziyaretçilerden gelen görüntülemek isteklerinin (request) hangi python kodlarına yönlendirileceğini belirtmiş oluyoruz.
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('ilksayfam/', include("ilksayfam.urls")), ]
Artık hazırladığımız sayfayı görüntüleyebiliriz. Aşağıdaki komutu kullanarak sunucuyu çalıştıralım.
python manage.py runserver
Ardından tarayıcımızı açalım ve http://127.0.0.1:8000/ilksayfam/ adresine gidelim. Ekranda "Uğur ola!" yazıyorsa ilk sayfanızı oluşturdunuz demektir. Tebrikler.