Ekonomist.gen.tr: Versiyon 4′e Merhaba İktisat Politikası Sınavı
May 30

Merhaba;

Vakti zamanında Çağlar Onur’un günlüğünde Django ile ilgili bir yazı okumuştum. Geçenlerde fırsatım oldu Django’yu inceleme fırsatı buldum. İncelerken de web sitesindeki tutorial‘dan türkçe notlar aldım. Belli bir kısımdan sonra not almayı bıraktığım için tamamını Türkçeleştiremedim. Zaten Sonradan fark ettiğim üzere yeterli bir dokümantasyon yok ne yazık ki. O açıdan yeni başlayanlar için biraz sıkıntı verici olabiliyor. Yeterli dokümantasyon olmayınca şıpıdanak yapılır diye söylenen şeyleri yapmanın o kadar da kolay olmadığını anlıyorsunuz. Aynı şeyi daha önce Ruby On Rails’de yaşamıştım. İlk izlenim olarak çok etkiletici bir teknoloji olduğunu düşünüyorum. Ancak bir php programcısı olarak Django’ya geçmeyi çeşitli başarısız girişimlerimden dolayı ertelemek zorunda kaldım.

Yine de bir giriş olması açısından çeviriyi aşağıda aktarıyorum.

Çalışmaya başlamak için önce pardusuma paket deposundan django farmework’u kurdum.

ŞİMDİ BAŞLAYALIM

djangonun yüklü olup olmadığının kontrol etmek için python komut satırından aşağıdaki komutu gireriz.

> import django

herhangi bir hata mesajı ile karşılaşmadıysak django sistemde kurulmuş demektir.

Komut satırından kodları saklamak istediğin dizine gel ve şu komutu çalıştır.

> django-admin.py startproject mysite

startproject komutu ile yaratılan dosyalara bakalım

mysite/
	__init__.py
	manage.py
	settings.py
	urls.py

Bu dosyalar:

* __init__.py: Bu boş dosya Python’a bu dizinin bir Python paketi olarak değerlendirilmesi gerektiğini söyler.
* manage.py: Django projesi ile .eşitli yollarla iletişim kurabileceğiniz bir komut satırı aracı.
* settings.py: Django projeniz için ayarlar dosyası.
* urls.py: Django projeniz için URL tanımlamaları.

Geliştirme sunucusunu aşağıdaki komutla çalıştıralım

> pythonmanage.py runserver

Validating models...
0 errors found.

Django version 0.95, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C (Unix) or CTRL-BREAK (Windows).

Farklı bir port kullanmak istiyorsak aşağıdaki gibi port belirtiriz.

> pythonmanage.py runserver 8081

bu işlemlerden sonra settings.py dosyasından veritabanı ayarlarını yaparız.

Bu ayarlamaları veritabanı sisteminize göre yapınız

* DATABASE_ENGINE — ‘postgresql_psycopg2’, ‘mysql’ veya ‘sqlite3’.
* DATABASE_NAME — Veritabanı adı veya SQLite kullanıyorsanız veritabanının tam yolu.
* DATABASE_USER — Kullanıcı adı (SQLite’ta yok).
* DATABASE_PASSWORD — Şifre (SQLite’ta yok).
* DATABASE_HOST — Veritabanı sunucusu. Eğer veritabanı sununuz aynı makinada ise bol bırakınız (SQLite’ta kullanılmaz).

settings.py dosyasını düzenlerken dikkat ederseniz en aşağıda INSTALLED_APPS diye bir bölüm bulunmaktadır.
Bu değişken Dijango projesi içerisinde etkinleştirilen uygulama adlarını içerir. Uygulamalar birden fazla projede kullanılabilir.

Varsayılan olarak INSTALLED_APPS Django iel gelen aşağıdaki uygulamaları içerir:

* django.contrib.auth — Yetkilendirme sistemi.
* django.contrib.contenttypes — İçerik tipleri için çatı.
* django.contrib.sessions — Oturum çatısı.
* django.contrib.sites — Tek Django kurulumunda birden çok sitey, yönetmek için çatı.

Bu uygulamalar en genel ihtiyaçları karşılaması açısından varsayılan bir şekilde kurulmuştur.

Her bir uygulama en azından bir tane veritabanı tablosuna ihtiya. duymaktadır. Bu anlamda kullanacağımız tabloları oluşturmak için aşağıdaki komutu kullanırız.

> python manage.py syncdb

syncdb komutu INSTALLED_APPS ayarlarına bakar ve settings.py’deki veritabanı ayarlarınıza göre gerekli tabloları oluşturur. her veritabanı ve tablonun yaratılışını görürsünüz. Ardından yetkilendirme için bir süper kullanıcı hesabı yaratmak isteyip istemediğiniz sorulur. Kabul edip, oluşturun.

Proje ve uygulama ne demektir?

Bir proje özel bir site için ayarlar ve uygulamalar bileşimidir. Bir proje birden fazla uygulama içerebilir. Ve bir uygulama birden fazla proje içerisinde yer alabilir.

Bu çalışmada mysite dizini altına bir anket uygulaması oluşturacağız.

Uygulamayı oluşturmak için mysite dizini çerisine girip aşağıdaki komutu vererek işe başlarız.

python manage.py startapp polls

Bu komut polls adında bir dizin yaratır ve dizinin içindekiler şu şekilde görünür.

polls/
    __init__.py
    models.py
    views.py

Bu dizin yapısı polls uygulamasına evsahipliği eder.

Basit anket uygulamamızda iki tane model var: polls ve choices. Bir anket (poll) suruya ve yayım tarihine sahiptir. Bir seçim (choice) ise iki alana sahiptir. seçim metni ve verilen oy alanı. Her bir seçim bir ankatle ilişkilidir.

Bu durum basit bir Python sınıfı ile gösterilir. polls/models.py dosyasını aşağıdaki gibi düzenleyin:

from django.db import models

class Poll(models.Model):
    question = models.CharField(maxlength=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(maxlength=200)
    votes = models.IntegerField()

Her bir model django.db.model.models alt sınıfı ile gösterilmiştir. Her bir model çeşitli sayıda değişkene sahiptir ve bu sınıflar veritabanı üzerindeki alanları ifade eder.

Modelleri Etkinleştirmek:

settings.py dosyasını düzenleyerek INSTALLED_APPS ayarları bölümüne ‘mysite.polls’ satırını eklemeliyiz.

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.polls'
)

Artık Django mysite içerisinde polls uygulamasının bulunduğunu bilmektedir.

Şimdi bir diğer komutu çalıştıralım:

python manage.py sql polls

Aşağıdakine benzer bir çıktı almalısınız. (polls uygulaması için CREATE TABLE SQL cümlecikleri):

BEGIN;
CREATE TABLE "polls_poll" (
    "id" serial NOT NULL PRIMARY KEY,
    "question" varchar(200) NOT NULL,
    "pub_date" timestamp with time zone NOT NULL
);
CREATE TABLE "polls_choice" (
    "id" serial NOT NULL PRIMARY KEY,
    "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
    "choice" varchar(200) NOT NULL,
    "votes" integer NOT NULL
);
COMMIT;

Eğer ilginizi çektiyse aşağıdaki komutları da kullanabilirsiniz:

  • python manage.py validate polls — Modelin inşasında herhangi bir hata olup olmadığını kontrol eder.
  • python manage.py sqlcustom polls — Outputs any custom SQL statements (such as table modifications or constraints) that are defined for the application.
  • python manage.py sqlclear polls — Outputs the necessary DROP TABLE statements for this app, according to which tables already exist in your database (if any).
  • python manage.py sqlindexes polls — Outputs the CREATE INDEX statements for this app.
  • python manage.py sqlall polls — A combination of all the SQL from the ‘sql’, ‘sqlcustom’, and ‘sqlindexes’ commands.

Şimdi syncdb komutunu tekrar çalıştırıp veritabanımızda yukarıdaki modelleri oluşturalım.

python manage.py syncdb


API İle Oynamak

Django API’sının neler yapabildiğini görmek için şu komutu kullanın:

python manage.py shell

We’re using this instead of simply typing “python”, because manage.py sets up the project’s environment for you. “Setting up the environment” involves two things:

Şimdipolls/model.py dosyasında poll ve choice sınıflarına __str__() eklemesini yapalım.

class Poll(models.Model):
    # ...
    def __str__(self):
        return self.question

class Choice(models.Model):
    # ...
    def __str__(self):
        return self.choice

Admin Sitesini Etkinleştirmek

Aşağıdaki üç işlemi gerçekleştirin:

  • INSTALLED_APPS ayarlarına “django.contrib.admin” satırını ekleyin.
  • python manage.py syncdb komutunu çalıştırın ve veritabanı ayarlarını güncelleyin.
  • mysite/urls.py dosyasını düzenleyerek “Uncomment this for admin:” satının yorum işaretini kaldırın.

Geliştirme sunucusunu çalıştırıp.

python manage.py runserver

http://127.0.0.1:8000/admin/ den yönetim paneline gelin.

bundan sonra daha önce girmiş olduğunuz süper kullanıcı şifresi ile giriş yapın.

Benden şimdilik bu kadar dostlar.

Esen kalın.

Toplam: 4955 ~ Bugün: 0 ~ En Son: 05 02 2012

~ Cengiz Aytun \\ tags: ,

“Django’ya Giriş” için 4 Yorum Var

  1. Serkan :

    Başlangıç belgesinin Türkçe olarak da erişilebilir olması çok güzel. Teşekkürler. Ayrıca hatırlatma olarak ekliyim bir benzeri de fazlamesai.net tarafından sunulmuştu. Ama tabi tamamıyla farklı bir makalenin çevirisi o: http://www.fazlamesai.net/index.php?a=article&sid=4196

  2. Açık kaynak ve kişisel tecrübeler » Django : Asıl Bunu Yapan İnsan Olamaz :

    [...] işle uğraşan Türk blogcuları: serkan , alper, furkan, 2nci, ekonomist, işbaran, çağlar, kaya, [...]

  3. ahmet muratoglu :

    Django ve Google App Engine kullanarak googlenin finans ve ekonomi servislerini kendi sitemizden veriyi alarak sunabilir miyiz bir fikri olan var mı? php ve curl kullanrak bunu yapabiliryoruz ama django ve google apisini kullanrak yapan görmedim…Hocam böyle birşey olur derseniz ben şimdiden kolları sıvadım haberiniz olsun..!

  4. Cengiz Aytun :

    Ahmet’e;
    Dediğiniz api hakkında bir çalışmam olmadı. O anlamda bir yorum yapamayacağım.
    Size başarılar dilerim.

Değerli dostlarım, öğrencilerim ve yolu bir şekilde buradan geçen internet yolcuları;
Yorum yapmadan önce şu hoş yazıyı okumanızı sizlerden rica ediyorum. (YAPICI ELEŞTİRİ ÜZERİNE KÜÇÜK BİR HİKAYE) Üzülerek söylemem gerekiyor ki konu ile ilgili olmayan yorumlar silinecektir.
Eğer bana iletmek istediğiniz bir mesajlarınız ya da görüşünüz varsa ziyaretçi derfterine yazabilirsiniz.
Son olarak iyi bir iletişim için Türkçenin doğru kullanımına lütfen özen gösteriniz.
İyi yorumlar.

Yorum Yap