Skip to content

Google App Engine üzerinde 13 basit adımda Django

Google, eposta hizmeti, dosya alanı, proje yönetim sistemi derken şimdi de web uygulamaları için altyapı ve barındırma desteği vermeye başladı. Artık Python ile hazırladığımız web uygulamalarımızı Google’ın altyapısından faydalanarak sunabileceğiz. Google App Engine, henüz önizleme sürümü aşamasında bir hizmet ama şimdiden ısınmaya başlamakta fayda var.
Thomas Brox Røst’un blogunda basit bir eğitsel buldum ve çevirebildim. Umarım konunun meraklılarına en azından fikir verir.

Not: Aşağıda yazanları deneyebilmeniz için Python 2.5 veya üzeri bir sürüm kullanmanız gerekiyor.

Pardus kullanıcıları “Pardus 2008″ ile Python 2.5 kullanıyor olacaklar. Az biraz daha beklemek gerekecek :)


11 Nisan 2008, Türker Sezer (Çeviri)
8 Nisan 2008, Thomas Brox Røst (Özgün metin)

Bu eğitselde arkaplanda datastore kullanan basit bir Django uygulamasının Google App Engine üzerinde nasıl çalıştırılacağını göstereceğim. Yazıyı yazarken, Django’ya aşina olduğunuzu varsayacağım.

Güncelleme: Tüm dosyaları buradan indirebilirsiniz. “main.py” içindeki “sys.path” değerini düzelttiğinize emin olun.


Adım 1: Bir uygulama adı kaydedin ve yönlendirmelere göre geliştirme setini kurun.


Adım 2: Uygulamanız için bir dizin yaratın. Bu eğitselde uygulamamın adı “mashname” olacak.

1. tmp$ mkdir mashname
2. tmp$ cd mashname

Adım 3: Yeni dizininize “main.py” adında bir dosya ekleyin:

main.py

1.  import os, sys
2.  os.environ["DJANGO_SETTING_MODULE"] = "mashname.settings"
3.  sys.path.append("/home/mew/tmp/mashname")
4.
5.  # Google App Engine kütüphaneleri
6.  from google.appengine.ext.webapp import util
7.
8.  # Djangoyu ayarlarını yeniden yüklemeye zorla
9.  from django.conf import settings
10. settings._target = None
11.
12. import django.core.handlers.wsgi
13. import django.core.signals
14. import django.db
15. import django.dispatch.dispatcher
16.
17. # Hataları kaydet.
18. #django.dispatch.dispatcher.connect(
19. #   log_exception, django.core.signals.got_request_exception)
20.
21. # Rollback olay yakalayıcısının kaydını sil
22. django.dispatch.dispatcher.disconnect(
23. django.db._rollback_on_exception,
24. django.core.signals.got_request_exception)
25.
26. def main():
27.     # WSGI için bir Django uygulaması yarat
28.     application = django.core.handlers.wsgi.WSGIHandler()
29.
30.     # WSGI CGI yakalayıcısını bu uygulama ile çalıştır
31.     util.run_wsgi_app(application)
32.
33. if __name__ == "__main__":
34.     main()

Bu yerelde test edebilmek için eklediğim Python yolu dışında temel olarak buradaki ile aynı dosya. Ayrıca DJANGO_SETTING_MODULE değerini de ayarladım-bu belki App Engine üzerinde çalışırken gerekli olmayabilir. Hata kaydını çalıştıramadığım için iptal etmek zorunda kaldım.


Adım 4: Aynı dizine app.yaml adında bir dosya ekleyin.

app.yaml

1. application: mashname
2. version: 1
3. runtime: python
4. api_version: 1
5.
6. handlers:
7. - url: /.*
8. script: main.py

Burada uygulama adının doğru yazıldığına emin olun.


Adım 5: “mashname” dizininizde, yeni bir django projesi yaratın

1. tmp/mashname$ django-admin.py startproject mashname

(Django’nuzun olması gerektiği gibi çalıştığını varsayıyorum)


Adım 6: Şu an uygulamanızı test edebiliyor olmalısınız:

1. tmp/mashname$ cd ..
2. tmp$ dev_appserver.py mashname
3. INFO     2008-04-08 19:08:10,023 appcfg.py] Checking for updates to the SDK.
4. INFO     2008-04-08 19:08:10,384 appcfg.py] The SDK is up to date.
5. INFO     2008-04-08 19:08:10,404 dev_appserver_main.py]Running application mash
6. name on port 8080: http://localhost:8080

Tarayıcınız ile http://127.0.0.1:8080/ adresine girin. Django’nun standart “It worked!” mesajını görüyor olmalısınız.


Adım 7: Proje içinde bir Django uygulaması yaratın:

1. tmp$ cd mashname
2. tmp/mashname$ python mashname/manage.py startapp main

Adım 8: Şimdi sıra bir model eklemeye geldi. Tüm ziyaretçilerin kaydını datastore’a yazan ve onların IP adresini ve ziyaret zamanını gösteren basit bir uygulama yaratacağız. “~/tmp/mashname/main/models.py” dosyasını düzenleyin. Dosya şöyle görünmeli:

models.py

1. from google.appengine.ext import db
2.
3. class Visitor(db.Model):
4.     ip = db.StringProperty()
5.     added_on = db.DateTimeProperty(auto_now_add=True)

Django modellerini kullanmadığımız için veri tabanını eşlemeye gerek yok.


Adım 9: Şimdi “Visitor” modeline veri eklemekten ve önceki ziyaretçilerin kayıtlarını göstermekle sorumlu görünümümüzü yaratacağız. views.py dosyasını aşağıdaki gibi düzenleyin (models.py ile aynı dizinde):

1.  from django.http import HttpResponse
2.
3.  from mashname.main.models import Visitor
4.
5.  def main(request):
6.      visitor = Visitor()
7.      visitor.ip = request.META["REMOTE_ADDR"]
8.      visitor.put()
9.
10.     result = ""
11.     visitors = Visitor.all()
12.     visitors.order("-added_on")
13.
14.     for visitor in visitors:
15.         result += visitor.ip + u" visited on " + unicode(visitor.added_on) + u"<br/>"
16.
17.     return HttpResponse(result)

Adım 10: Son olarak, urls.py dosyasını görünümümüzü gösterecek şekilde düzenleyelim.

urls.py

1. from django.conf.urls.defaults import *
2.
3. urlpatterns = patterns("",
4. (r"^$", "mashname.main.views.main"),
5. )

Adım 11: Uygulamanızı test edebilirsiniz. (6. adımdaki gibi) Herşey yolunda gidiyor olmalı. Her sayfa yenilendiğinde, “Visitor” modeline yeni bir kayıt ekleniyor ve ekrana basılıyor.


Adım 12: Uygulamanızı “Google App Engine”e yükleyin:

1. tmp$ appcfg.py update mashname

İlk yüklemede Google hesabınız için eposta adresinizi ve şifrenizi girmelisiniz.


Adım 13: İyi eğlenceler! Bu uygulamanın sonucunu görmek için, http://mashname.appspot.com/ adresine bakabilirsiniz.

One Trackback/Pingback

  1. [...] 2: There is now a Turkish translation of this tutorial, courtesy of Türker [...]

Post a Comment

You must be logged in to post a comment.