Django REST Framework - Get Data

September 20, 2015

Django ile web servisleri gelişmeye olanak sağlayan Django REST Framework ile çok ufak bir uygulama yazdım. Aslına bakılırsa django ile ilk web servis denemem oldu. Yazdığım bu ufak veri çeken uygulamayı sizlerle adım adım uygulamak istedim. Dediğim gibi daha bende emekleme aşamasındayım şimdilik sadece verilerimizi çekebileceğiz :) .

Öncelikle Django REST Framework sitesinde şu linkte bahsedilen gerekli paketlerin kurulumları yapalım.

pip install djangorestframework
pip install markdown
pip install django

Ardından bir django projesi ve uygulaması yaratalım.

django-admin.py startproject RestFrameworkExample
cd RestFrameworkExample
python manage.py startapp library

Uygulamamızı ve REST Framework'ü settings dosyamızdaki INSTALLED_APPS kısmına ekleyelim.

/Desktop/RestFrameworkExample/RestFrameworkExample/settings.py

INSTALLED_APPS = (
   .
   .
   .
   'rest_framework',
   'library'
)

Bu aşamada oldukça basit bir Books modeli yazalım.

/Desktop/RestFrameworkExample/library/models.py

from django.db import models

class Books(models.Model):
    name       = models.CharField(max_length=80)
    summary    = models.TextField()
    writer     = models.CharField(max_length=100)

Modelimizide yazdığımıza göre şimdi modelimizi yani tablolarımızı yaratalım.

python manage.py syncdb

Uygulamamız altında bu seferde modelimiz için bir Serializer sınıfı yazalım.

/Desktop/RestFrameworkExample/library/serializers.py

from library.models import Books
from rest_framework import serializers

class BookSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Books
        fields = ('name', 'writer')

Şimdi views.py altında bir görünüm oluşturalım.

/Desktop/RestFrameworkExample/library/views.py

from library.serializers import BookSerializer
from library.models import Books

from rest_framework import views
from rest_framework.response import Response
from rest_framework import status


class BookList(views.APIView):
    def get(self, request, format=None):
        books = Books.objects.all()
        serializer = BookSerializer(books, many=True)
        return Response(serializer.data)

Gördüğümüz gibi basit bir django view. Farklı olarak sadece REST Framework içindeki viewleri ve gerekli kütüphaneleri çağırıyoruz. Sınıfımız içinde ise  çektiğimiz verileri az önce oluşturmuş olduğumuz BookSerializera response ediyoruz. Ben bu aşamada sadece get işlemi yaptım. Ancak post işlemide yine bu class içinde def post adında bir method oluşturularak yapılmakta.

Şuan sadece url dosyamıza servisimize erişim sağlayacağımız url'i eklememiz gerekiyor.

/Desktop/RestFrameworkExample/RestFrameworkExample/urls.py

from django.conf.urls import patterns, url, include
from rest_framework.urlpatterns import format_suffix_patterns
from library import views
from django.contrib import admin

urlpatterns = patterns('',
    url(r'^book/$', views.BookList.as_view()),
    url(r'^admin/', include(admin.site.urls)),
)
urlpatterns = format_suffix_patterns(urlpatterns)

Son olarak ben veriler üzerinde işlemler yapmak için admini aktifleştirdim.

Kitap listemizi json ve api formatında bize sunan web servisimiz şuan hazır.

python manage.py runserver

Komutumuzla projeye can verelim ve http://127.0.0.1:8000/book/ adresini açalım.

Django ile ilk REST Framework çalışmam bu şekilde. Umarım çok havada kalmamıştır. Açıkçası Türkçe kaynak bulamamıştım bu yüzden belki ilk defa bu olaya el atmak isteyenlere yol gösterir diye yazmak istedim. Öğrendikçe devamı gelecek özellikle post olayına bakacağım.

Proje linki: https://github.com/oztaser/rest-framework-example

Comments

comments powered by Disqus