Django, Python dilinde yazılmış, ücretsiz ve açık kaynaklı bir web çerçevesidir. İlk olarak 2005 yılında yayınlanan Django, “hızlı geliştirme ve temiz, pragmatik tasarım” mottosunu benimser. Bir web sunucusuna kurulan bu çerçeve; zengin özelliklere sahip, güvenli ve ölçeklenebilir bir web ön yüzünü hızlı bir şekilde üretebilir.
Herhangi bir web uygulaması, içeriği için veritabanlarına güvenir. Modern bir çerçeve olan Django, bir dizi standart veritabanı programını destekler; örneğin, PostgreSQL, SQLite, MySQL, vb. Bu kılavuz, bir Django uygulamasının MySQL üzerindeki bir veritabanına nasıl bağlanacağını gösterecektir.
Önkoşullar
Bu öğreticiyi takip etmek için Django ve veritabanı bağlantısına geçmeden önce belirli ön koşulları karşılamanız gerekir:
- Uygun bir web sunucusu. Bu kılavuzda bir Ubuntu sunucusu.
- Düzgün yapılandırılmış bir Python 3 geliştirme ortamı.
- Bir veritabanı uygulaması. İşte MySQL kurulumu ve kullanımı.
hakkında ayrıntılı bir kılavuz
Python 3 Kurulumu ve YapılandırılmasıDjango, Python ile yazılmıştır. Herhangi bir Python uygulamasını çalıştırmak, sistemde Python ikili dosyalarının kurulu olmasını gerektirir. Ubuntu, varsayılan olarak Python kurulu olarak gelir. Burada Python 3'ü kullanacağız. Terminalden aşağıdaki komutları çalıştırın. İlk olarak, APT
|
1 |
$
$ sudo apt update && sudo apt upgrade -ysudo apt && updatesudo apt -upgrade |
y
Python 3, resmi Ubuntu paket sunucularından doğrudan temin edilebilir.
-python-ispython3 paketi, kullanım kolaylığı için
python3 dosyasına sembolik bir python
|
1 |
$
$ sudo apt install python3 python-is-python3sudo apt install python3 -python-is |
python3
|
1 2 |
$
$ python3 --version
$ python --version --python3 $ version --python |
version
Bundan sonra, pip aracına ihtiyacımız var. Bu, standart Python paket yöneticisidir. Standart kütüphanenin parçası olmayan ek Python kütüphanelerinin yönetilmesinden sorumludur. pip3
|
1 |
$
$ sudo apt install python3-pipsudo apt install -python3 |
pip
|
1 |
$
$ sudo apt install build-essential libssl-dev libffi-dev python3-devsudo apt install -buildessential -libssldev -libffidev -python3 |
dev
MySQL Kurulumu ve Yapılandırılması
|
1 |
$
$ sudo apt install mysql-serversudo apt install -mysql |
server
|
1 |
$
$ systemctl status mysqlsystemctl status |
mysql
MySQL sunucusu çalışır durumdadır. Artık Django uygulamamızın geliştirilmesine güvenle geçebiliriz.
-
Django ile Çalışmak
Örnek Django uygulamasını oluşturmaWeb uygulamamızın temeli, Django proje iskeletini gerektirir. Bu iskelet, sağlam bir web uygulaması oluşturmak için gereken tüm araçları ve kütüphaneleri içerir. İlk olarak, Django uygulamamız için özel bir dizin oluşturacağız. Dizine, oluşturmak üzere olduğumuz uygulamayla uyumlu ve anlamlı bir ad verilmesi önerilir. Bu gösterimde dizini :
|
1 |
$ olarak adlandıracağız.
$ mkdir -pv myDemoApp -mkdirpv |
myDemoApp
Dizin içinde sanal bir ortam oluşturmak için Python venv modülüne ihtiyacımız var. Modülü :
|
1 |
$ kullanarak kurun:
$ sudo apt install python3-venvsudo apt install -python3 |
venv
Ardından, dizine gidin ve sanal bir ortam oluşturun. Netlik sağlamak amacıyla ortama :
|
1 |
$ adını verdik:
$ python3 -m venv demoapp_env -python3 mvenv |
demoapp_env
Sonra, activate
|
1 |
$ . demoapp_env/bin/activate |
Şimdi Django'yu bu özel sanal ortamın içine kuracağız. Pip bazı ek bileşenleri indirip kuracaktır:
|
1 |
$ pip install django |
Django kuruldu ve kullanıma hazır. Yeni bir Django projesi oluşturmak için django-admin komutunu çağırın. Ardından uygulamaya uygun bir ad verin:
|
1 |
$ django-admin startproject demoapp |
Gerekli proje dosyaları ve dizinleri hazır olacak şekilde bir demo projesi oluşturacaktır:
|
1 |
$ ls -l |
Proje iskeleti hazır. Sırada, amacımıza ulaşmak için projeyi düzgün bir şekilde yapılandırmamız gerekiyor.
-
Django proje ayarlarını düzenleme
Projenin tüm yapılandırmaları şu dosya altında saklanır: settings.py. Bu dosya Django proje dizini içinde yer alır. Uygun bir saat dilimi ayarlayarak ve Django uygulamasına bağlanabilecek ana bilgisayarları listeleyerek başlayacağız. Yapılandırma dosyasını bir metin düzenleyicide açın:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Betikte aşağı kaydırın ve şu girdiyi bulun: TIME_ZONE. Gösterim amacıyla saat dilimi şu şekilde ayarlanmıştır: America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
Referans olması açısından, aşağıdaki komut Linux'ta desteklenen tüm saat dilimlerini yazdıracaktır:
|
1 |
$ timedatectl list-timezones |
Ardından, şu girdiye kaydırın: ALLOWED_HOSTS. Bu girdi, uygulamaya hangi makinenin/makinelerin erişebileceğini kontrol eder. Gösterim amacıyla yalnızca localhost içerir:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
Ardından dosyayı kaydedin ve düzenleyiciyi kapatın. Bir sonraki komut değişiklikleri uygulayacaktır:
|
1 |
$ python manage.py migrate |
Şimdi, web uygulaması için bir yönetici hesabı oluşturmamız gerekiyor. Bu hesap, Django yönetim arayüzüne erişmek için kullanılacaktır. Aşağıdaki komutu çalıştırın:
|
1 |
$ python manage.py createsuperuser |
Kullanıcı adı, e-posta ve şifre isteyecektir. Uygulama artık veritabanına bağlanmaya hazır.
MySQL Bağlantısı
-
MySQL konektörlerini ve geliştirme kütüphanelerini yükleme
MySQL'i Django uygulamasına entegre etmek için gerekli araçları sağlayacak bazı ek Python 3 kütüphanelerine ihtiyacımız var. Şu veritabanı konektörünü kullanacağız: mysqlclient. Bu, şunun bir çatalıdır (fork): MySQLdb.
Sisteminizde python3-dev kurulu olduğundan emin olun:
|
1 |
$ sudo apt install python3-dev |
Ayrıca bazı ek Python ve MySQL başlık dosyalarına (headers) ve kütüphanelerine de ihtiyacımız var:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
Kurulum tamamlandıktan sonra, pip aracını kullanarak şu Python modülünü yükleyin: mysqlclient. Yoksayılabilecek bazı hata mesajları oluşabilir:
|
1 |
$ pip install mysqlclient |
-
Özel bir veritabanı yapılandırma
Bir sonraki adım, Django uygulamamız için özel bir veritabanı ve veritabanı kullanıcısı yapılandırmaktır. MySQL kabuğunu şu kullanıcı olarak başlatın: root kullanıcısı:
|
1 |
$ sudo mysql -u root |
Hali hazırda mevcut olan tüm veritabanlarını kontrol etmek için aşağıdaki sorguyu çalıştırın:
|
1 |
$ SHOW DATABASES; |
Django uygulamamız için özel bir veritabanı oluşturalım. Proje adıyla uyumlu, uygun bir ad verin:
|
1 |
$ CREATE DATABASE demoapp_data; |
Ardından, oluşturulduğunu doğrulayın:
|
1 |
$ SHOW DATABASES; |
Şimdi, özel bir MySQL kullanıcısı oluşturun. Bu kullanıcıyı veritabanının sahibi olarak yapılandıracağız. Django uygulaması, MySQL veritabanıyla çalışmak için bu kullanıcının kimlik bilgilerini kullanacaktır:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Give the user demoapp_user kullanıcısına şu veritabanı üzerinde tam yetki verin: demoapp_data:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
Yetki değişikliklerinin geçerli olması için şunu yeniden yükleyin: MySQL yetki tabloları (grant tables):
|
1 |
$ FLUSH PRIVILEGES; |
Veritabanı artık Django uygulamasına bağlanmaya hazır.
-
Veritabanını Django Uygulamasına Bağlama
Son olarak, Django uygulamasını veri depolamak için veritabanını kullanacak şekilde yapılandıracağız. Yapılandırma betiğini açın: settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
Aşağı kaydırarak şu girdiyi bulun: DATABASES ve aşağıdaki kodu girin:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
Dosyayı kaydedin ve düzenleyiciyi kapatın. Bir sonraki adım, daha önce kodda açıklanan yapılandırma dosyasını ayarlamaktır. Açıklanan konumdaki metin dosyasını açmak için sudo kullanın:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
Bu yapılandırma dosyası, Django'ya özel veritabanı ve MySQL sunucusunda oluşturduğumuz kullanıcı hakkında bilgiler içerecektir. Dosyanın sonuna aşağıdaki satırları ekleyin:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
Değişikliklerin geçerli olması için MySQL sunucusunu yeniden başlatmamız gerekir:
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
MySQL bağlantısını test etme
Şimdi MySQL bağlantısının düzgün çalışıp çalışmadığını doğrulama zamanı. Django sunucusu sorunsuz çalışıyorsa, bağlantı iyi çalışıyor demektir. Aksi takdirde, bir şeyler yanlıştır. İlk olarak, Django projesinde yapılan tüm değişiklikleri uygulayın:
|
1 |
$ python manage.py migrate |
Şimdi, aşağıdaki proje dizinine gidin ve Django sunucusunu başlatın:
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
Ardından, bir web tarayıcısından sunucuya erişmeyi deneyin:
|
1 |
$ http://<server_ip_address>:8000 |
İşte bu kadar! Django başarı sayfasına başarıyla ulaştık. Bu aynı zamanda MySQL bağlantısının düzgün çalıştığını da doğrular. Görev bittikten sonra sanal ortamdan güvenle çıkabilirsiniz:
|
1 |
$ deactivate |
Son Düşünceler
Bu kılavuzda, Django ve MySQL'i bir araya getirmenin temellerini öğrendiniz. Bir Django uygulaması oluşturduk ve bunu bir MySQL veritabanına nasıl bağlayacağımızı gösterdik. Sihir, Django yapılandırma dosyasında yatıyor: settings.py. Ayrıca ALLOWED_HOSTS ve TIME_ZONE gibi bazı temel ayarları da değiştirdik. Django inanılmaz derecede esnektir. MySQL'in yanı sıra PostgreSQL gibi diğer SQL sunucularını, Nginx gibi sunucu motorlarını vb. de destekler.
Django'yu kurmak, yapılandırmak ve onunla çalışmak için en iyi uygulamalara yönelik kılavuzlarımıza da göz atabilirsiniz:
- Ubuntu 20.04 üzerinde Django Web Çatısını Kurma
- Ubuntu 20.04 üzerinde PostgreSQL, Nginx ve Gunicorn ile Django Kurulumu
- Django Modelleri Oluşturma: Bir Eğitim
Mutlu Kodlamalar!





Yorumlar
Henüz yorum yapılmamış. İlk siz olun.