İçeriğe geç
Muslu Yüksektepe

Django ile teknik servis formu (Python 3)

Django 1.9 teknik servis formu dokümanının Python 3 sürümü.

Bu depo, Django 1.9 ile teknik servis formu sitesi yapmayı anlatan Türkçe dokümanın Python 3 sürümünü içeriyor. Python 2 ile yazdığım ilk sürümü 2016 yılının Ocak ayında djangoturkiye.com için hazırlamıştım. Kısa süre sonra Django'ya doğrudan Python 3 ile başlamak isteyenler için kodu Python 3'e taşıdım. Bu sürümü Korhan Yüzbaş ile birlikte hazırladık ve MIT lisansıyla paylaştık.

Amaç

2016'nın başında Python 2 hâlâ yaygın olarak kullanılıyordu, ancak yeni başlayanların Python 3 ile başlaması gerektiği açıktı. Dokümanı okuyup kodu Python 3 ile çalıştırmaya çalışan biri print ifadeleri, Unicode metinler ve model tanımlarındaki farklar yüzünden ilk adımda hata alabilirdi. Bu depoyu, aynı örnek uygulamanın Python 3'te doğrudan çalışan bir karşılığını sunmak için açtım. Konular ve uygulamanın yapısı Python 2 sürümüyle aynı kaldı; değişen, kodun yazılış biçimi oldu.

Örnek uygulama

Uygulama, Python 2 sürümündeki gibi servisformu adlı tek bir Django uygulamasından oluşuyor. Müşteriler, teknisyenler, aksesuarlar ve işlem durumları ayrı tablolarda tutuluyor. Her servis formuna bir müşteri ve teslim alan teknisyen bağlanıyor, formun altına en fazla beş ürün ekleniyor. Yönetim panelinden müşteri aranabiliyor, kayıtlar toplu güncellenebiliyor ve her form için yazdırılabilir bir servis fişi açılabiliyor. Ana sayfada müşteri, form numarasıyla cihazının durumunu AJAX ile sorgulayabiliyor. Servis formları XML olarak da dışa aktarılabiliyor.

Python 3 için yapılan değişiklikler

İlk dönüşümü ben yaptım. Ardından Korhan Yüzbaş kodu gözden geçirip Python 3 ve Django'nun önerdiği yazım biçimine daha uygun hâle getirdi.

  • print ifadeleri Python 3'teki print() fonksiyonuna çevrildi.
  • Modellerdeki __unicode__ tanımları __str__ olarak değiştirildi.
  • Metinlerin önündeki u önekleri ve dosya başlarındaki kodlama satırları, Python 3'te gereksiz olduğu için kaldırıldı.
  • Müşteri kodu ve form numarası için Python'un random ve string modülleri yerine Django'nun get_random_string fonksiyonu kullanıldı. Bu alanlar ayrıca benzersiz (unique) olarak işaretlendi.
  • BooleanField alanlarının varsayılan değeri 1 yerine True olarak yazıldı.
  • Uygulama ayarı INSTALLED_APPS içinde servisformu.apps.ServisformuConfig olarak tanımlandığı için default_app_config satırı kaldırıldı.
  • Bir süre PostgreSQL denendi, ancak dokümanı takip edenlerin ek kurulum yapmadan başlayabilmesi için SQLite'a geri dönüldü.

Kimler için uygun

Django'ya Python 3 ile başlamak isteyenler bu depodaki kodu doğrudan çalıştırabilir. Konuların ayrıntılı anlatımı Python 2 deposundaki PDF dokümanında duruyor. İki depo yan yana okunduğunda, Python 2'den Python 3'e geçerken bir Django projesinde nelerin değiştiği de somut olarak görülebiliyor.

Kategori
Eğitim ve topluluk
Yıl
2016

Teknolojiler

  • Python
  • Django
  • Education

Bağlantılar

  • GitHub https://github.com/muslu/django-teknikservis-py3

Tüm projelere dön