Django REST API

Gökhan YAVAŞ
gokhanyavas
Published in
4 min readJan 30, 2017

Merhaba,

Bu yazımda Django REST kütüphanesini inceleyeceğiz. Öncelikle REST ve API’nin ne anlam ifade ettiğini, neden kullanıldığını açıklayıp, sonrasında konuyu pekiştirmek adına bir örnek üzerinden Django REST kütüphanesinin nasıl kullanılacağını öğreneceksiniz.

REST (Representational State Transfer): Client-Server arasında veri alışverişini HTTP protokolü üzerinden sağlayan yapıdır. GET, PUT, POST, DELETE REST request tipleridir. REST ile JSON, XML ve Text formatında veri alışverişi yapabilirsiniz. Detaylı bilgiye buradan ulaşabilirsiniz.

API(Application Programming Interface): Bir uygulamanın bir takım fonksiyonlarının diğer programlar tarafından kullanılmasını sağlayan yapıya verilen isimdir.

Kullanım Amacı Nedir?

Web Servisler (SOAP, REST) günümüzde kurumlar arasında iş birliği açısından önemli bir yer teşkil etmektedir. Çünkü bir çok Web tabanlı proje dışardaki sistemlerle veri alışverişinde bulunmaktadır. Örnek olarak, hastane yazılımlarının sağlık bakanlığının randevu sistemini kullanması, okul yazılımlarının MEB sistemleri arasında bilgi alışverişi verilebilir.

Django REST API

Başlamadan önce sisteminize Django REST kütüphanesini kurun:

pip install djangorestframework

Ardından Doviz_Website isminde bir Django projesi oluşturun. Her şeyi derli toplu tutmak adına projemizin içinde bir proje daha oluşturacağız. Bu kısımda projemizi Modelliyor olacağız. PyCharm terminalinde aşağıdaki kodu çalıştırın:

python manage.py startapp API

Projenizin içinde API isminde bir klasör oluşacak. Bu uygulamayı kullanmak için Django’ya söylememiz gerekiyor. Bunu Doviz_Website/settings.py dosyası içinde belirteceğiz. Setting.py içindeki INSTALLED_APPS kısımın bulup ‘API’ şeklinde belirtmek gerekiyor. Yani:

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'API',
]

REST kütüphanesinide ( ‘rest_framework’ ) tanımladığımıza dikkat edin. Buraya kadar herşey tamamsa sıra modelimizi tanımlamakta…
Model Tanımlamak
Projemize ait modeli tanımlamak için API/models.py yolunu takip edin. Models.py dosyasını açın ve aşağıdaki kodları yazın:

from django.db import models# Modeller burada tanimlanacak.class Kurlar (models.Model):
#Doviz ismi DOLAR/TL
doviz_ismi = models.CharField(max_length=10)
alis = models.FloatField() #alis fiyati
satis = models.FloatField() #satis fiyati
fark = models.FloatField() #fark
kur_kodu = models.CharField(max_length=10) #USD/TL
def __str__(self):
return self.doviz_ismi
Kurlar isminde bir sınıf tanımladık. models.Model Kurların bir model olduğunu belirtir. Bu sayede Django modelin veritabanında tutulmasını sağlar. Buradaki doviz_ismi, alis, satis, fark, kur_kodu isim değişkenlerimizdir. Türkçe karakter kullanmadığımıza dikkat edin.
  • models.CharField : kısıtlı uzunlukta metin tanımlamak için kullanılır.
  • models.TextField : uzun metinleri tanımlar.
  • models.DateTimeField : gün ve saati tanımlamada kullanılır.
  • models.ForeignKey : başka bir model ile bağlantı kurmak için kullanılır.
İlk defa karşılaştığımız ifadeleri açıkladık. Şimdi admin paneline bu modeli ekleyelim. API/admin.py dosyamız aşağıdaki gibi olmalı:from django.contrib import admin
from .models import Kurlar
# Register your models here.admin.site.register(Kurlar)
Ardından PyCharm terminali açıp modelimizi veritabanına ekleyelim. Sırasıyla:
python manage.py makemigrationsEğer bir hata yoksa çıktı şöyle olmalı:(Doviz_Islemleri) bash-3.2$ python manage.py makemigrations
Migrations for 'API':
API/migrations/0001_initial.py:
- Create model Kurlar
Bu işlem ile Django bize veritabanı için bir taşıma dosyası oluşturdu. Ardından aşağıdaki kod ile veritabanımızı oluşturalım.python manage.py migrateSıra admin paneline erişmek için kullanıcı oluşturmakta. Kullanıcı oluşturmak için aşağıdaki komutu kullanırız:python manage.py createsuperuserKomut çalıştığında kullanıcı adı, şifre ve mail adresi bilgisi tanımlıyoruz. Ardından projeyi başlatalım. http://127.0.0.1:8000/admin/ adresine girin, tanımladığınız kullanıcı adı ve şifre ile giriş yapın.
Panele giriş yaptığınızda bu ekran ile karşılaşacaksınız. Burada tanımladığımız kurlar modelini görüyor olmalısınız. Kurlars sekmesine tıklayın ve sol üst köşede ADD Kurlar butonuna tıklayın ve ardından birkaç kayıt girin. Örneğin;
Eğer Django ile ilgili daha fazla bilgiye erişmek isterseniz belgelere göz atabilirsiniz.Serializers (Serileştirme)Python Programlama dilinin nesneye dayalı bir dil olduğunu daha önceki makalelerimde söylemiştim. Nesnelerin tekrar tekrar kullanabilir yapılar olduğunu biliyorsunuz. Nesneleri tekrar kullanılırken hangi tipte ve değerde olduğunu bilemeyebiliriz bu sırada serileştirme denilen yapı devreye girmektedir.Şimdi API altında serializers.py dosyası oluşturalım.from rest_framework import serializers
from .models import Kurlar
class KurlarSerializer(serializers.ModelSerializer):class Meta:
model = Kurlar
# fields = ('alis','satis') // belirtilen kisimlari ceker.
# fields = '__all__' // tum kisimlari ceker.
fields = '__all__'
API altındaki views.py dosyasını aşağıdaki şekilde düzenleyin:
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Kurlar
from .serializers import KurlarSerializer
# Create your views here.class KurListesi(APIView):def get(self, request):
kurlar = Kurlar.objects.all()
serializer = KurlarSerializer(kurlar, many=True)
return Response(serializer.data)
def post(self):
pass
Doviz_Website klasörü altında bulunan urls.py dosyasına urlimizi ekleyelim:
from django.conf.urls import url
from django.contrib import admin
from rest_framework.urlpatterns import format_suffix_patterns
from API import viewsurlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^kurlar/', views.KurListesi.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)
Gerekli ekleme işlemlerinin ardından projemizi çalıştıralım ve http://127.0.0.1:8000/kurlar/ adresine gidelim.
Sorun yoksa ilgili adrese gittiğinizde gördüğünüz gibi tanımladığımız kurlar listelendi. Projenin tam haline GitHub adresimden ulaşabilirsiniz.

--

--