Giriş.
Herkese merhabalar. Django ile çalışırken bir çok defa interaktif shell açarak bir şeyleri kontrol etmişizdir. Yazılan orm sorgusunun beklenen çıktıyı verip vermemesi, basit fonksiyon testleri vs vs.
python manage.py shell
Yukarıdaki Django komutu normal bir Python shellinden farklı olarak, sessionu Django settings modülüne göre konfigüre edecek ve sessionu oluşturacaktır.
Fakat bu hali ile en baz yeteneklere sahiptir. Çalışılacak olan modelleri, veritabanı fonksiyonlarını, veya çok kullanılan tüm yardımcı metodları her çalışmada tekrar tekrar içeriye aktarmamız gerekmekte.
django-extensions ve shell_plus.
django-extensions paketi Django uygulamalarınıza bir çok yetenek sağlayan yardımcı bir paket. İçerisinde lokal geliştirme sunucunuzu HTTPS üzerinden sunmadan, model grafiklerini çıkartmaya veya bugünün konusu gibi akılcı bir shell deneyimi oluşturmaya kadar, bir çok araç barındırıyor.
Kurulum için
pip install django-extensions
paketi yükledikten sonra django-extensions’ı herhangi bir django uygulaması gibi kayıt etmemiz gerekmekte. Sadece geliştirme ortamında kullanacaksanız development settings dosyasına veya aşağıdaki gibi settings dosyanıza doğrudan ekleyebilirsiniz.
if DEBUG: INSTALLED_APPS.append('django_extensions')
python manage.py shell_plus
komutunu koşturduğunuzda aşağıdaki gibi bir görünüm elde edeceksiniz. En çok etkileşime geçilen yardımcı metodlar, değişkenler ve Django uygulamanızın settings dosyasında tanımlı olan tüm modeller içeriye aktarılmış olacak.
Kullanışlı değil mi? Fakat deneyim hala geliştirilebilir.
shell_plus eğer sistemde herhangi 3rd party interpreter yoksa (ipython, bpython vs) varsayılan olarak python interpreterini kullanır. Bu interpreter auto-complete, auto indentation veya editor modu gibi özelliklerden yoksundur.
Yukarıda sayılanlar veya daha farklı özellik setini shell’e kazandırma adına herhangi bir interpreter kurulabilir. Ben ipython’u kullanışlı buluyorum ve öneriyorum.
pip install ipython
Yükleme işlemi tamamlandıktan sonra django shell’ini tekrar çalıştıracak olursak shell_plus yüklü interpreter listesine bakacak ve ipython ile shelli açacaktır. Ve bir çok yetenek ile birlikte 🙂
Sonuç.
django-extensions gerçekten fazlasıyla yardımcı bir paket. Geliştirme ortamınızda işlerinizi hızlandıracağına kesinlikle eminim. Bunun yanında tabi ki birden fazla interpreterin yüklü olduğu sistemlerde seçim yapabilmek de mümkün. Örneğin;
python manage.py shell_plus --bpython
python manage.py shell_plus --ipython
python manage.py shell_plus --plain
Daha fazla bilgi için dökümantasyon linki burada. Ipython’da ha keza çok güçlü bir interpreter onunla ilgili bilgi de almak isterseniz onun linki de burada.
Görüşmek üzere! Happy coding 🙂
İlk Yorumu Siz Yapın