Django projenizi bu en iyi uygulamalarla geliştirin

Django, web uygulamaları oluşturmak için sağlam, açık kaynaklı, Python tabanlı bir çerçevedir. Popülerliği son birkaç yıl içinde artmıştır ve zaten olgunlaşmış ve arkasında büyük bir toplulukla yaygın şekilde kullanılmaktadır.

Django, web uygulamaları oluşturmak için kullanılan diğer Python tabanlı çerçeveler arasında (Flask ve Pyramid gibi) en popüler olanı. Hem Python sürüm 2.7 hem de Python 3.6'yı destekler. Ancak bu makalenin yapıldığı sırada Python 2.7, topluluk, üçüncü taraf paketleri ve çevrimiçi dokümantasyon açısından hala daha erişilebilir bir versiyondur. Django, doğru kullanıldığında güvenlidir ve yüksek esneklik boyutları sağlar. Python kullanarak sunucu tarafı uygulamalar geliştirirken gitmenin yolu budur.

En popüler 3 Python web geliştirme çerçevesinin Google Trendleri

Deneyimli bir Python ve Django geliştiricisi olarak, yıllar boyunca öğrendiğim ve topladığım bir Django kurulumu için en iyi uygulamaları sizlerle paylaşacağım. Kemerinizin altında birkaç Django projesi olsun ya da birincisini sıfırdan başlatmak üzeresiniz, burada açıklanan en iyi uygulamalar, yolda daha iyi uygulamalar oluşturmanıza yardımcı olabilir.

Bu makaleyi çok pratik bir zihniyetten yazdım, böylece geliştirme araç kutunuza derhal bazı araçlar ekleyebilirsiniz. Sonraki projeleriniz için gelişmiş bir özel Django kazan plakası bile oluşturabilirsiniz.

Bu makalenin amacı için bir Linux Ubuntu makinesi kullandığınızı varsayıyorum. Makale boyunca, bazı kod satırları $ işaretiyle başlar. Bunlar, bu hattın terminale yerleştirilmesi gerektiğini vurgulamak için kullanılır. Satırı $ işareti olmadan kopyaladığınızdan emin olun.

Sanal çevre

Python tabanlı uygulamalar geliştirilirken, üçüncü parti paketlerin kullanılması devam eden bir şeydir. Bu paketler sık ​​sık güncellenmektedir, bu yüzden onları düzenli tutmak esastır. Aynı yerel makinede daha fazla proje geliştirirken, her paketin mevcut sürümünü takip etmek zordur. Farklı projeler için aynı paketin farklı sürümlerini kullanmak imkansızdır. Dahası, bir projedeki paketi güncellemek diğerindeki işlevselliği bozabilir ve bunun tersi de geçerlidir.

Python Sanal Ortamının kullanışlı olduğu yer burasıdır. Sanal ortamı kullanmak için şunları kullanın:

$ apt-get update
$ apt-get kurulum python-pip python-dev kurmak-temel
$ export LC_ALL = "en_US.UTF-8" #, bir sonraki satırdan bir hata almanız durumunda gerekli olabilir
$ pip install - yükseltme pip
$ pip install - yükseltme sanalenv
$ mkdir ~ / .virtualenvs
$ pip install virtualenvwrapper
$ export WORKON_HOME = ~ / .virtualenvs
$ nano ~ / .bashrc

Bu satırı dosyanın sonuna ekleyin:

. /usr/local/bin/virtualenvwrapper.sh

Ardından yürütün:

$ Bashrc

Kurduktan sonra, aşağıdakileri yazarak projeniz için yeni bir sanal ortam oluşturun:

$ mkvirtualenv proje_adı

Sanal ortamınız bağlamındayken, terminale bir ön ek eklendiğini fark edeceksiniz:

(project_name) ofir @ oyun alanı: ~ $

Sanal ortamı devre dışı bırakmak (çıkmak) ve yerel makinenizin ana Python içeriğine geri dönmek için aşağıdakileri kullanın:

$ devre dışı bırak

Sanal ortam içeriğini etkinleştirmek (başlatmak) için aşağıdakileri kullanın:

$ workon project_name

Yerel makinenizde mevcut sanal ortamları listelemek için aşağıdakileri kullanın:

$ lsvirtualenv

Proje bağımlılıklarınızı (paketler) makinenizde sanal bir ortamda tutmak, onları yalıtılmış bir ortamda tutmanızı sağlar. Bunları yalnızca tek bir (veya birden fazla) proje için kullanırsınız. Yeni bir sanal ortam oluştururken, içinde hiçbir paket kurulu olmayan taze bir ortam başlatıyorsunuz. Sonra kullanabilirsiniz, örneğin:

(proje_adı) $ pip kurulum Django

Django'yu sanal ortamınıza kurmak için veya:

(proje_adı) $ pip install Django == 1.11

sadece çevre içinden erişilebilen Django'nun 1.11 sürümünü yüklemek için.

Ana Python yorumlayıcınız veya makinenizdeki diğer sanal ortamlar, henüz yüklediğiniz yeni Django paketine erişemez.

Runserver komutunu sanal ortamınızı kullanarak kullanmak için, sanal ortam bağlamındayken, şunları kullanın:

(proje_adı) $ cd / yol / to / django / proje
(proje_adı) $ ./manage.py runserver

Benzer şekilde, Python yorumlayıcısını sanal ortamdan girerken:

(proje_adı) $ python

Ortamda önceden yüklediğiniz paketlere erişebilecek.

Gereksinimler

Gereksinimler, her paketin sürümü de dahil olmak üzere, projeniz çalışırken kullandığı Python paketlerinin (bağımlılıklar) listesidir. Needs.txt dosyası için bir örnek:

dicttoxml == 1.7.4
Django == 1.11.2
h5py == 2.7.0
matplotlib == 2.0.2
numpy == 1.13.0
Yastık == 4.1.1
psycopg2 == 2.7.1
pyparsing == 2.2.0
piton-dateutil == 2.6.0
pytz == 2017,2
Altı == 1.10.0
xmltodict == 0.11.0

Needs.txt dosyanızı güncel tutmak, diğer geliştiricilerle düzgün şekilde işbirliği yapmak için çok önemlidir. Üretim ortamınızı uygun şekilde yapılandırmak için de önemlidir. Kod deponuza dahil edildiğinde bu dosya, sanal ortamınıza yüklenen tüm paketleri terminalde tek bir satır çalıştırarak güncellemenizi sağlar. O zaman yeni geliştiricilere anında ve çalışmaya başlayabilirsiniz.

Yeni bir gereksinim.txt oluşturmak veya mevcut olanı güncellemek için sanal ortamınızdan kullanın:

(proje_adı) $ pip freeze> needs.txt

Rahatlığınız için, bu komutu Git havuzunuz tarafından izlenen bir klasörde yürüttüğünüzden emin olun. Bu, kodun diğer örneklerinin de needs.txt dosyasına erişmesine izin verir.

Yeni bir geliştirici ekibe katılırsa veya needs.txt dosyasında listelenen paketleri kullanarak yeni bir ortam yapılandırmak istiyorsanız, sanal ortam bağlamında yürütün:

(proje_adı) $ cd / yol / için / gereksinimler / dosya
(proje_adı) $ pip install -r needs.txt

Dosyada listelenen tüm gereksinimler hemen sanal ortamınıza yüklenir. Daha eski sürümler güncellenecek ve daha yeni sürümler gereksinimlerin tam listesine uyacak şekilde düşürülecek. Yine de dikkatli olun - yine de saygı göstermek istediğiniz ortamlar arasında farklılıklar olabilir.

Bu komutları iş akışınıza entegre etmenizi şiddetle tavsiye ederim. Kodu depoya koymadan önce needs.txt dosyasını güncelleyin ve depodan kodu çektikten sonra needs.txt dosyasını kurun.

Kredi: https://www.djangoproject.com/

Daha iyi settings.py yapılandırması

Django, çok basit ancak kullanışlı bir settings.py dosyasıyla kullanıma sunuldu. Bu, projeniz için ana ve en kullanışlı yapılandırmaları tanımlar. Settings.py dosyası çok basittir. Ancak bazen, bir ekip üzerinde çalışan bir geliştirici olarak veya bir üretim ortamı kurarken, birden fazla temel settings.py dosyasına ihtiyacınız vardır.

Çoklu ayar dosyaları, her ortam için özel olarak yapılmış yapılandırmaları ayrı ayrı kolayca tanımlamanıza olanak tanır:

ALLOWED_HOSTS # üretim ortamı için #
DEBUG
VERİ TABANLARI # aynı takımdaki farklı geliştiriciler için

Settings.py dosyanızı yapılandırmak için size genişletilmiş bir yaklaşım tanıtmama izin verin. Farklı sürümleri korumanıza ve istediğinizi herhangi bir zamanda ve herhangi bir ortamda kullanmanıza izin verir.

İlk olarak, settings.py dosya yolunuza gidin:

(proje_adı) $ cd / yol / için / ayarlar / dosya

Sonra ayarları adı verilen yeni bir modül oluşturun (modül, __init__.py dosyasını içeren bir klasördür):

(proje_adı) $ mkdir ayarları

Şimdi settings.py dosyanızı base.py olarak yeniden adlandırın ve oluşturduğunuz yeni modülün içine yerleştirin:

(proje_adı) $ mv settings.py settings / base.py

Bu örnekte, geliştirme ortamınız için bir ayar dosyasını ve üretim ortamınız için bir ayar yapılandırmak istediğinizi varsayıyorum. Aynı ekipteki farklı geliştiriciler, farklı ayar dosyalarını tanımlamak için aynı yaklaşımı kullanabilir.

Geliştirme ortamınız için şunları oluşturun:

(proje_adı) $ nano settings / development.py

Sonra şunu yazın:

.base alma işleminden *
DEBUG = Doğru

ve dosyayı Ctrl + O, Enter ve ardından Ctrl + X tuşlarına basarak kaydedin.

Üretim ortamınız için yaratın:

(proje_adı) $ nano ayarları / production.py

ve türü:

.base alma işleminden *
DEBUG = Yanlış
ALLOWED_HOSTS = [‘app.project_name.com’,]

Artık belirli bir ortamın ayarlarını eklemek veya güncellemek istediğinizde, bunu kendi ayarlar dosyasında kolayca yapabilirsiniz.

Merak ediyor olabilirsiniz - Django, her ortamda hangi ayarların yükleneceğini nasıl biliyor? __İnit__.py dosyasının amacı budur. Django, sunucuyu çalıştırırken yüklemek için kullanılan settings.py'yi aradığında, örneğin, şimdi settings.py dosyası yerine bir ayarlar modülü bulur. Ancak, bir __init ___ py dosyası içeren bir modül olduğu sürece, Django söz konusu olduğunda, aynı şeydir. Django, __init__.py dosyasını yükler ve içinde ne yazılırsa çalıştırır.

Bu nedenle, aşağıdakileri çalıştırarak __init__.py dosyasının içine hangi ayar dosyasını yüklemek istediğimizi tanımlamamız gerekir:

(project_name) $ settings / __ init__.py

ve sonra bir üretim ortamı için, örneğin:

üretim ithalatından *

Bu şekilde, Django her base.py ve production.py ayarlarını her başlatışında yükleyecektir. Sihirli?

Şimdi, geriye kalan tek konfigürasyon, __init__.py dosyasını .gitignore dosyanızda tutmaktır, böylece itme ve çekme işlemlerine dahil edilmez. Yeni bir ortam kurduğunuzda, ayarlar modülünde yeni bir __init__.py dosyası oluşturmayı unutmayın. Ardından, daha önce yaptığımız gibi gereken ayar dosyasını alın.

Bu yazıda Django projenizi daha iyi kurmanız için en iyi üç uygulamayı ele aldık:

  • Sanal bir ortamda çalışmak
  • Needs.txt dosyasını güncel tutmak ve iş akışınızda sürekli kullanmak
  • Daha iyi bir proje ayarları dizisi oluşturmak

Son projenizde bu en iyi uygulamaları takip ettiniz mi? Paylaşacak herhangi bir görüşünüz var mı? Yorumlar çok takdir edilmektedir.

Bunu faydalı buldunuz mu? Eğer öyleyse, lütfen bana biraz alkış verin, böylece daha çok insan makaleyi görsin.

Bu, Django geliştirme için en iyi uygulamalar hakkında serinin 1. bölümüdür. Bir sonraki parça mevcut olduğunda hemen güncelleme almak için beni takip et.

CodingStartups adresinde teknolojik girişimciler için daha fazla ipucu bulun.