Don't develop your app to support Django admin


The Django admin site is a very useful application, bundled with Django itself. It’s considered one of the selling points of the framework. Having CRUD stuff ready once you write your models is really convenient. I mainly use Django admin for these 3 purposes: Debugging and testing in my local machine. For example, creating & updating instances and checking things created via endpoints. Troubleshooting in production. Basically the same thing I do in my local machine, however in this case, its mostly read operations.…
Read more ⟶

Python’da distributed lock mekanizması


Bildiğiniz üzere, eşzamanlı programlamada lock bir senkronizasyon primitifidir. Bu arkadaş sayesinde, eşzamanlı çalışan iki fonksiyonun tek bir kaynağı aynı anda yönetmeye çalışmasını engelleyebilirsiniz; bu sayede race condition senaryolarının önüne geçmiş olursunuz. Farzımuhal bir cüzdan uygulamasında, müşteri hesabından para çektiğinde bakiyesinin azalması senaryosunu düşünelim. Bunu yapmak için kullanıcın mevcut bakiyesinden, çekilen tutarın çıkartılıp veri tabanına kaydedilmesi gerekir. Eğer kullanıcı aynı anda başka bir ödeme işlemi de yapıyorsa ve o işlem de bakiyesini değiştirecekse bu işlemleri bir sıraya sokmamız gerekir, zira bakiye sorgulama işlemi yapıldığı anda —aynı anda çalıştıklarından— ikisi de aynı bakiyeyi göreceklerdir.…
Read more ⟶

Django’da “bilet” tabanlı WebSocket kimlik doğrulama


Bu yazıda Türkçe’ye “bilet tabanlı kimlik doğrulaması” şeklinde çevirdiğim, İngilizce’de “ticket-based authentication” olarak geçen, WebSocket bağlamında kullanılan bir kimlik doğrulama yöntemini anlatacağım. Eğer Django’da WebSocket uygulamaları yazdıysanız bilirsiniz ki bu işleri halletmek için genelde channels kütüphanesinin kapısını çalarız, dolayısıyla örnekleri bu kütüphane üzerinden göstereceğim. Yazıyı daha sade tutmak için kütüphaneyi açıklamak için fazla zaman harcamayacağım; bildiğinizi varsayıyorum. Öncelikle “Channels bize zaten kimlik doğrulama yöntemi veriyor, scope["user"] diye bir şey var, sen hayırdır?…
Read more ⟶

Gerçek hayatta Django I: Sinsi ‘sinyal’ yürütümü


“Gerçek hayatta Django” olarak isimlendirdiğim yazı serisinin ilk yazısına hoş geldiniz. Bu seride, engin Django deneyimlerimi sizlerle paylaşıyorum. İlk yazı olmasından ötürü ufak bir konsept tanımı yapacağım. Genel olarak, Django’da yaptığım hataları, bunları nasıl çözdüğümü ve şöyle böyle kazandığım tecrübeleri sizlere aktaracağım. Ana amacım, Django ile fazla haşır neşir olmayan veya yeni başlayan geliştiricilerin bu tarz yazıları okuyup “vay anasını” demelerini sağlamak, mümkünse ekşi sözlükte “öğrenildiğinde ufku iki katına çıkaran şeyler” başlığının altında bu yazıların linklerin paylaşılmasını sağlamak (hehe).…
Read more ⟶

Bir Django projesinin yapısı


Django’yu öğrenmek isteyenlerin kafasını karıştıran konseptlerden biri, basit bir Django projesinin hiyerarşik yapısı ve bunun nasıl çalıştığıdır. Bir Django projesi başlatmak için önce sanal bir ortam oluşturun, bu ortama Django’yu yükleyin, ardından şu komutu çalıştırın: django-admin startproject myproject Bu komutu çalıştırdığınız dizinde myproject isimli bir klasör oluşacaktır. Bu klasöre girerseniz ana dizinde manage.py isimli bir dosya göreceksiniz. Bu dosyayı kullanarak Django’yu ayağa kaldırabilirsiniz: python manage.py runserver Eğer Django’nun komut satırında size verdiği adrese giderseniz, yerel ortamınızda çalışan, Django tarafından hazırlanmış bir web sayfası göreceksiniz.…
Read more ⟶