{Django Öğreniyorum}
Günümüz kusursuzcuları için ağ çatısı

İleri Seviyede Öğretici: Yeniden Kullanılabilir Uygulamalar Nasıl Yazılır?

Bu sayfa Öğretici 7‘nin kaldığı yerden başlıyor. Ağ anketimizi, yeni projelerde tekrar kullanabileceğiniz ve diğer insanlarla paylaşabileceğiniz bağımsız bir Python paketine dönüştürüyor olacağız.

Kısa bir süre çnce 1-7 öğreticilerini tamamladık. Örnek projeyi aşağıda açıklananlarla eşleşecek şekilde incelemenizi öneririz.

Yeniden Kullanılabilirlik Önemlidir

Bir ağ uygulamasını tasarlamak, oluşturmak, sınamak ve sürdürmek yoğun bir iştir. Birçok Python ve Django projeleri ortak sorunları paylaşmaktadır. Bu tekrarlanan işlerden bir kısmını kurtarabilirsek harika olmaz mı?

Yeniden kullanılabilirlik, Python’da yaşam biçimidir. Python Paket Dizini (PyPI) kendi Python programlarında kullanabileceğini geniş bir paket yelpazesine sahiptir. Projenize dahil edebileceğiniz mevcut yeniden kullanılabilir uygulamalar için Django Paketlerini göz gezdirin. Django kendisi de sadece bir Python paketi. Bu, mevcut Python paketlerini veya Django uygulamalarını alıp kendi ağ projenize oluşturabileceğiniz anlamına gelir. Sadece projenizi benzersiz yapan parçaları yazmanız yeterlidir.

Üzerinde çalıştığımız gibi bir anket uygulamasına ihtiyaç duyan yeni bir proje başlattığınızı varsayalım. Bu uygulamayı nasıl yeniden kullanılabilir yaparız? Neyse ki, halen bu yolda ilerliyorsun. Öğretici 3‘te, bir anket kullanarak anketleri proje düzeyinde URLconf’tan nasıl ayırdığımızı gördük. Bu yazıda, uygulamanın yeni projelerde kullanımı kolay hale getirilmesi ve başkalarının yükleyip kullanabilmesi, yayınlamaya hazır hale getirilmesi için daha ileri adımlar atacağız.

Paket? Uygulama?

Bir Python paketi kolayca yeniden kullanmak için ilgili Python kodunu gruplamaya bir yol sağlar. Bir paket Python kodunun bir veya daha fazla dosyasını içerir. Bunlar “modüller” olarak da bilinir.

Bir paket “import foo.bar” veya “from foo import bar” ile alınabilir. Bir paket oluşturmak için bir dizin (sandık gibi) init.py özel bir dosya içermelidir; bu dosya boş olsa bile.

Bir Django uygulaması sadece bir Django projesinde kullanılması amaçlanan bir Python paketidir. Bir uygulama, kalıplar, sınamalar, URL’ler ve görünümler alt modülleri olması gibi ortak Django sözleşmelerini kullanabilir.

Daha sonra başkalarının yüklemesi kolay bir Python paketinin oluşturulması sürecini tanımlamak için ambalaj terimini kullanıyoruz. Bu biraz karışık olabilir biliyoruz.


Projeniz ve tekrar kullanılabilir uygulamanız

Önceki eğitimlerden sonra, projemiz şöyle görünmelidir:


    benimsite/
        manage.py
        benimsite/
            __init__.py
            settings.py
            urls.py
            wsgi.py
        anketler/
            __init__.py
            admin.py
            migrations/
                __init__.py
                0001_initial.py
            models.py
            static/
                anketler/
                    images/
                        background.png
                    style.css
            templates/
                anketler/
                    ayrinti.html
                    index.html
                    sonuclar.html
            tests.py
            urls.py
            views.py
        templates/
            admin/
                base_site.html
  

Öğretici 7‘de benimsite/templates oluşturdunuz ve Öğretici 3‘deki anketler/templates oluşturdunuz. Şimdi, belki de proje ve uygulama için ayrı şablon dizinleri seçmeyi seçmek daha açıktı: Anket uygulamasının parçası olan her şey anketlerde. Uygulamanın kendine yetebilmesini sağlar ve yeni bir projeye dahil edilmesini kolaylaştırır.

Anketler dizini şimdi yeni bir Django projesine kopyalanabilir ve derhal yeniden kullanılabilir. Yine de yayınlanmaya hazır değil. Bunun için başkalarının yüklemesini kolaylaştırmak için uygulamayı paketlemeliyiz.


Bazı önkoşulların yüklenmesi

Mevcut Python paketleme durumu, çeşitli araçlar ile biraz karışıktır. Bu yazıda, paketimizi oluşturmak için setuptools kullanacağız. Tavsiye edilen paketleme aleti (dağıtma çatalıyla birleştirildi). Ayrıca, pip‘i kurmak ve kaldırmak için kullanacağız. Şimdi bu iki paketi kurmalısın. yardıma ihtiyacınız varsa, Django’nun pip ile nasıl kurulacağına bakabilirsiniz. Kurulum araçlarını aynı yolla yükleyebilirsiniz.


Uygulamanızı Paketleyin

Python paketlemesi, uygulamanızı kolayca yüklenip kullanılabilecek belirli bir biçimde hazırlamak anlamına gelir. Django’nun kendisi buna çok benzer yapıdadır. Anketler gibi küçük bir uygulama için bu süreç çok zor değil.

Uygulamanız için bir ad seçme

Paketiniz için bir ad seçerken mevcut paketlerle çakışan isimlendirmeyi önlemek için PyPI gibi kaynakları kontrol edin. Dağıtılacak bir paket oluştururken genellikle modül adının önüne koymak kullanılışlıdır. Bu, Django uygulamalarını arayan diğer kişilerin uygulamanızı Django’ya özgü olarak tanımlamasına yardımcı olur.

Uygulama etiketleri (diğer bir deyişle, uygulama paketlerine nokta şeklindeki yolun son kısmı) INSTALLED_APPS içinde benzersiz olmalıdır. Aynı etiketi Django katkı paketlerinden herhangi biriyle (ör. Auth, admin veya messages) kullanmaktan kaçının. </div>

Bazı dosyalar eklemediğiniz sürece belgeler dizininin paketinize dahil edilmeyeceğini unutmayın. Pek çok Django uygulaması, belgelerini readthedocs.org gibi siteler aracılığıyla çevrimiçi olarak da sağlar.


Kendi paketini kullanma

Aşağıdaki adımlar django-anketleri bir kullanıcı kitaplığı olarak yüklemektedir. Kullanıcı başına kurulumların paketin örgü genelinde kurulmasına göre çok daha fazla çıkarı vardır; örneğin yönetici erişimine sahip olmadığınız sistemlerde kullanılabilir ve kapetin sistem hizmetlerini ve makinenin diğer kullanıcılarını etkilemesini önler.

Kullanıcı başına yüklemelerin, o kullanıcı olarak çalışan örgü araçlarının davranışını hala etkileyebileceğini unutmayın, böylecek sanalenv daha sağlam bir çözümdür. (Aşağı bakın)


Uygulamanızın yayınlanması

Artık django anketlerini paketledik ve sınadık. Dünyayla paylaşamya hazır durumda! Bu sadece bir örnek değilse, şimdi yapabilirsiniz.


Python paketlerini virtualenv ile yükleme

Daha önce, anketler uygulamasını bir kullanıcı kitaplığı olarak kurduk. Bunun bazı olumsuzlukları var:

Tipik olarak, bu durumlar yalnızca birkaç Django projesini korurken ortaya çıkar. Ne yaparlarsa yapsınlar, en iyi çözüm, virtualenv kullanmaktır. Bu araç, her biri kendi kitaplıkları ve paket ad alanının kopyasını içeren çok sayıda ayrılmış Python ortamını korumanıza izin verir.