Django'nun Büyüsünün Gizemini Çözmek

Yayınlanan: 2022-03-10
Kısa özet ↬ Bu makalede, oluşturulan dosya ve klasörün ne yaptığını anlayarak Django'nun masaya ne getirdiğine derinlemesine bir göz atacağız, bu bize Django çerçevesini daha iyi anlamamızı sağlayacaktır.

Resmi belgelere göre,

Django, hızlı geliştirmeyi ve temiz, pragmatik tasarımı teşvik eden üst düzey bir Python Web çerçevesidir. Deneyimli geliştiriciler tarafından oluşturulmuş olup, Web geliştirmenin güçlüklerinin çoğunu halleder, böylece tekerleği yeniden icat etmenize gerek kalmadan uygulamanızı yazmaya odaklanabilirsiniz. Ücretsiz ve açık kaynak kodludur.

— DjangoProject.com

Python'un web uygulamaları oluşturmak için popüler çerçevelerinden biridir ve en çok, belirlenmiş konfigürasyonlar ve dosyalar ile bir standart oluşturmada ölçeklenebilirliği nedeniyle tercih edilir. Bu, geliştiriciler için Django'nun tüm hedefini tamamlıyor;

"...az zamanda harika bir uygulama oluşturmak ve temel ayarlarla daha az ilgilenmek."

Ne inşa ediyor olursanız olun, tüm web uygulamalarını kapsayan temel yapılandırmalar, dosyalar ve stiller vardır. Django kullanırken, uygulamanızın geliştirme döngüsünün farklı noktalarında belirli komutları çalıştırdığınızda bunlar sizin için otomatik olarak oluşturulur. Bununla, Django sizin için diğerlerini hallederken, uygulamanızı geliştirmenin temel yönüne odaklanmak için yeterli zamanınız olacak.

Bu, kaputun altında birçok şey olduğu anlamına gelir. Hareketli parçaları tam olarak kavrayamayan biri için bu çok zor olabilir. Bu yazıda aşağıdakileri öğreneceğiz:

  • Django'nun Kurulumu
  • startproject ve startapp komutları
  • Aşağıdakileri içeren Django yapılandırma dosyaları;
    • ayarlar.py
    • urls.py
    • yönetmek.py
  • Model Düzeni
  • yönlendirme

Bunların hepsinin nasıl bir araya geldiğini ve oynadıkları rolü öğreneceğiz. Django'nun içinde olup biten her şeye bakmanın mümkün olmayacağını bilmek önemlidir. Bu eğitimin kapsamı dışındaki durumlar için, sizi bu konuda yardımcı olacak kaynaklara yönlendirecek bağlantılar olacaktır.

Öğrenme amaçlı bir e-ticaret platformu oluşturacağız. Bu tam anlamıyla bir e-ticaret sitesi değildir, uygulamamız sadece iki temel özelliğe sahip olacaktır; ürün oluşturma ve yöneticinin görünümünden sipariş verme.

Bu makale, Django'nun önceden oluşturulmuş komutlarını, dosyalarını ve temellerini anlamanız konusunda size rehberlik edecektir. Django'yu kullanan veya kullanmayı planlayan ve kaputun altında ne olduğunu bilmek isteyen geliştiricilere yöneliktir. Django'yu kullanmış olmanız zorunlu olmasa da, bu makaleye devam etmeden önce Django'nun temelleri konusunda deneyim sahibi olmak size avantaj sağlayacaktır. Bu parçada nelerin ele alınacağını tam olarak kavramak için çalışan bir Python bilgisine sahip olmanız gerekir.

Atlamadan sonra daha fazlası! Aşağıdan okumaya devam edin ↓

Django'yu Yükleme

Zaten Django kurulu değilse, bunu yapmak için gereken adımlar burada.

İlk olarak, djangodev adında bir sanal ortam oluşturun. Django çalışma alanınızı ve bağımlı paketlerini izole etmek için buna ihtiyacınız var.

 python3 -m venv ~/.virtualenvs/djangodev

Şimdi sanal ortamınıza girmek için onu aktif hale getirmeniz gerekiyor;

 source ~/.virtualenvs/djangodev/bin/activate

source ile çalışırken herhangi bir hata alırsanız, bu alternatif komutu kullanabilirsiniz,

 . ~/.virtualenvs/djangodev/bin/activate

Windows kullanıcıları için bunun yerine bunu kullanın,

 ...\> %HOMEPATH%\.virtualenvs\djangodev\Scripts\activate.bat

Not: Django'yu kullanmak istediğiniz her an sanal ortamı etkinleştirmeniz gerekir.

Artık sanal ortamınızda olduğunuza göre, Django'yu kurun:

 python -m pip install Django

Django'nun düzgün kurulup kurulmadığını kontrol etmek için şunu çalıştırın;

 python -m django --version

Şakaboom! Şimdi biraz sihir yapmaya hazırsınız, asalarınızı hazırlayın!

Hareket halindeyken dosya ve klasör oluşturma yöntemi basit ve anlaşılır olabilir. Ancak, orta veya büyük bir proje ve geçilmesi gereken bir son tarih oluşturmanız gerektiğinde ideal değildir. Kişisel projeler için bile her zaman bir son teslim tarihimiz vardır.

Yeni bir büyük proje oluştururken bu yöntemi izleyerek, birden çok dosya ve klasör oluşturmanız ve birden çok ayar yapmanız gerekecek, bu da önlenebilir hataların oluşmasına ve çok fazla zaman kaybına neden olabilir. Django aracılığıyla bize sunulan startproject ve startapp komutları bu sorunu çözmeyi amaçlamaktadır. Bu iki komut, dosyalar, klasörler oluşturur ve sizin için birçok yapılandırma gerçekleştirir.

startproject komutunu kullanarak yeni bir uygulama oluşturarak başlayalım.

İskele Uygulaması

Uygulamamızı oluşturacağız ve oluşturulan dosyalara ve kullanacağımız birkaç komuta bir göz atacağız. Başlamak için bu komutu terminalinizde çalıştırın;

 django-admin startproject ecommerce_site

Django'yu kurarken, eylemlerini gerçekleştirmesi için erişim sağlamak için yolunuza django-admin eklenir. İdari sorumluluklar için Django'nun komut satırı yardımcı programıdır. Burada daha fazla django-admin kullanımı öğrenin; bu makalenin kapsamını biraz aşıyor.

startproject , projeyi oluşturmaya yardımcı olan bir Django komutudur. Burada projemize ecommerce_site projemizin adını geçiyoruz. Ardından projeyi ecommerce_site adlı bir dizinde oluşturmaya devam eder. Dizin şöyle görünmelidir,

startproject'den sonra dizini gösterir.
Startproject'i çalıştırdıktan sonra klasör gösteriliyor. (Büyük önizleme)

Yeni oluşturulan dizine gitmemiz ve uygulamayı oluşturmak için komutu çalıştırmamız gerekecek.

 cd ecommerce_site python manage.py startapp trading

startapp , proje dizininde manage.py tarafından yürütülen bir komuttur, birden fazla dosya ve komutta belirtilen ad kullanılarak adlandırılan bir klasör oluşturur, bu durumda, trading yapılır. Uygulama klasörü, bir uygulamanın özelliklerini oluşturmak için gerekli olması gereken basit dosyalardan oluşur. Şimdi dizininiz şöyle görünmelidir:

startapp'tan sonra dizini gösterir.
Startapp'i çalıştırdıktan sonra klasör gösteriliyor. (Büyük önizleme)

Bir proje ile bir uygulama arasındaki farkı merak ediyorsanız. Bir proje bir Django web uygulamasıdır, bir veya daha fazla uygulamadan oluşabilir. manage.py dosyasını ve settings.py ile diğer dosyaları içeren diğer modülü tutan klasördür. Uygulama, belirli bir özelliği gerçekleştiren, models.py , geçiş dizini ve daha fazlasını içeren bir python paketidir. Daha fazlası için bu cevabı Stack Overflow'ta kontrol edebilirsiniz.

startproject , ana proje dizinini oluştururken startapp , uygulama dizinini oluşturur. Her ikisine de nesilde kullanılmak üzere bir isim geçmiştir. startproject , yeni bir proje oluştururken çalıştırılan ilk komuttur, startapp ise yeni proje dizini içinde çalıştırılır.

Mevcut düzen, inşa ettiğiniz uygulama ne olursa olsun kullanabileceğiniz harika bir haritalamadır. Ölçeklenebilir ve ihtiyaç duyacağınız dosyalardan oluşur. Proje içinde dosya oluşturma, yeniden adlandırma, düzenleme ve taşıma şansı vardır.

Django'nun Yapılandırması

Django sizin için farklı ayarlar ve konfigürasyonlar sağlar, iki komutu farklı dosyalarda çalıştırdıktan sonra, her birinin ne yaptığını öğrenmek için oluşturulan dosyaları inceleyelim.

settings.py

Çoğu web uygulaması aşağıdaki gibi yapılandırmalara ihtiyaç duyar; kullanıcıları doğrulamak için kimlik doğrulama, belirli yeteneklere sahip belirli kullanıcılara izin vermek ve güvenlik standartları belirlemek için izinler. Tüm bunlar, kullanıcılarınıza ihtiyaç duydukları en iyi deneyimi sunmak için gereklidir. Bir geliştirici olarak, üzerinde çalıştığınız her uygulama için bunların her birini kendi başınıza uygulamaya başlamanız uzun zaman alacaktır.

Django size bu gerekli konfigürasyonları ve daha fazlasını sağlar - öyle ki, istediğinizi seçip bunları takabilirsiniz. Bunlar settings.py yapılır, sizin için temel işlevleri sağlamak üzere oluşturulmuş önceden oluşturulmuş ayarlar vardır.

Django bir projeyi çalıştırmaya çalıştığında, aradığı belirli değişkenler vardır. settings.py , diğer dosyalara veya bilgilere yol açan bu değişkenleri tutan dosyadır. Django, manage.py dosyasından bu dosyaya yönlendirilir ve buradan bilgi alır veya yönlendirildiği diğer dosyaları yükler.

Bu konfigürasyonlar şunları içerir:

  • DEBUG
    DEBUG işlevi, geliştirme sırasında hataların okunmasını ve hata ayıklama kodunu etkinleştirmek için True olarak ayarlanmıştır, üretim sırasında (yani dağıtırken) False olarak ayarlanmalıdır. Bu ayar, kodunuzu çalıştırmayı denediğinde Django'nun yardımıyla kodunuzda daha iyi hata ayıklayabilmenizi sağlar.
  • INSTALLED_APPS
    Bu, Django'da belirli bir özelliği gerçekleştiren tüm uygulamaların listesidir. Kullanıcı kimlik doğrulaması için kullanılan " django.contrib.admin' , yönetici işlevi için kullanılan Django.contrib.admin" ve kullanıcılara bildirim veya bilgi göndermek için gereken 'django.contrib.messages' 'django.contrib.auth' gibi bazı varsayılan uygulamalarla birlikte gelir. startapp komutunu kullanarak oluşturduğunuz diğer tüm uygulamaların Django tarafından çalıştırılabilmesi için burada olması gerekir.
  • MIDDLEWARE , Django istekleri ve yanıtlarından geçen girdileri ve çıktıları işlemek için hafif bir çerçevedir. 'django.contrib.auth.middleware.AuthenticationMiddleware' gibi her ara yazılım, bir uygulama ile belirli bir işlevi yerine getirir ve kullanıcıları isteklerle ilişkilendirmek için 'django.contrib.sessions' ile çalışır. Dokümanlardaki her bir ara katman yazılımının diğer özelliklerini kontrol etmelisiniz.
  • ROOT_URLCONF , Django uygulamanıza bir istek iletildiğinde Django'nun sizin urlpatterns aradığı bir yolun değişkenidir. Bir Django uygulamasında bir istek yapıldığında, Django bu değişkeni arar ve önde gelen dosyayı yükler ve eşleşen yolu aramak için urlpatterns listesi boyunca döngüler yapar.
  • TEMPLATES , bir görünümü temsil etmek için HTML dosyalarının oluşturulmasına izin veren bir ayardır. İstek, yetkilendirme ve mesaj uygulamalarıyla iletişim kurar. 'BACKEND' değeri ve 'APP_DIRS' True olarak ayarlanmışsa, Django'nun /templates klasöründe HTML dosyalarını aramasını sağlar. OPTIONS 'context_processors' , isteği bir argüman olarak alan ve bir şablon oluşturulduğunda bağlamla birleştiren çağrılabilirlerdir; bu çağrılabilirler, hata ayıklama, kimlik doğrulama ve genel olarak isteklerin işlenmesine yardımcı olmak için çalışır.
  • WSGI_APPLICATION , wsgi.py dosyasındaki application değişkenine giden bir yoldur.
  • DATABASE , PostgresSQL, MySQL ve MongoDB gibi harici bir veritabanına (veya varsayılan sqlite durumunda olduğu gibi dahili) erişimi tutan bir sözlüktür. Örneğimiz için kullanacağım bir Postgres veritabanı örneği:
 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'db_name', 'USER': 'db_user', 'PASSWORD': 'db_password', 'HOST': 'localhost', 'PORT': '', } }

Varsayılan sqlite veritabanını kullanmaya karar verebilirsiniz, bu üretim için pek işe yaramaz. Yukarıdaki gibi bir Postgres veritabanı kurabilirsiniz, önce veritabanını oluşturmanız ve veritabanına yazma izni olan kullanıcı, şifreyi iletmeniz gerekir.

Not : Bu eğitimin amacı için önceden ayarlanmış varsayılan sqlite veritabanını kullanabilirsiniz. Yukarıdakiler, Django'da SQL ve NO-SQL veritabanı bağlantısını nasıl ayarlayabileceğinizin bir gösterimidir.

  • AUTH_PASSWORD_VALIDATORS bunlar, parola doğrulamaları için çağrılan işlevlerdir. Kullanıcı (ve yöneticiler) kayıtları oluştururken, şifreleri sıfırlarken ve değiştirirken çağrılırlar. Resmi belgelerden onlar hakkında daha fazla bilgi edinebilirsiniz.

Ayarlarla ilgili daha fazla belge burada bulunabilir.

manage.py

Çoğu web projesi, komutların başladığı bir giriş noktasına ihtiyaç duyar. Uygulamaya ağ geçidi görevi gören bir giriş noktası. Her Django projesinde, genellikle manage.py dosyasıdır.

Bu dosya, uygulamanızda bir başlangıç ​​noktası olarak gereklidir. Buradan tüm komutlar çalıştırılır ve her şey burada başlar.

manage.py , Django-admin ile aynı işlevi görür. Ayrıca Django'ya uygulamanızda sahip olduğunuz konfigürasyonların konumunu da söyler. Bu, varsayılan olarak ayarlanmıştır ve değiştirilmesi gerekmez.

settings.py dosyamızın varsayılan ayarlar modülünü işlemek için def main() işlevini kullanır. Yürütme işlevini içe aktarmaya çalışır ve hatayla karşılaşırsa ImportError atar. Aksi takdirde, komut satırından sys.argv tarafından iletilen herhangi bir argümanı alır ve yürütür.

sys.argv , terminal aracılığıyla iletilen komutu alan bir listedir. Komut satırında python manage.py runserver çalıştırdığımızda, sys.argv ["manage.py", "runserver"] olarak ayarlanır ve bu, execute() işlevine iletilir.

python manage.py startapp trading veya python manage.py makemigrations makemigrations gibi argümanlar, yürütme için sırasıyla [ "manage.py", "startapp", "trading"] ve ["manage.py", "makemigrations"] olarak ayarlanır.

if ifadesi, verilen komut manage.py olarak ayarlanmışsa çalışacak şekilde ayarlanır.

django-admin işlevlerini çalıştırmanın yanı sıra, onu çalışan sunucuda, taşıma işlemlerini ve projenizin kullanacağı diğer komutlarda kullanacaksınız. Projelerinizi dağıtırken, test ederken ve hata ayıklarken de buna ihtiyacınız olacak.

Model Düzeni

Django sizin için basit bir modelleme düzeni sağlar. Modellerinizi trading dizinindeki models.py dosyasında yapılandırırsınız. Sınıflarınız (veya modelleriniz), veritabanı tablolarınızın izleyeceği düzenlerdir.

Her tablo için kullanıcıdan (veya yöneticiden) almak istediğiniz veri türlerine göre sınıflarınızı tanımlarsınız. Modellerimiz, settings.py içindeki DATABASE değişkeniyle çalışan bir geçiş dosyası oluşturur.

Ürünler ve siparişler için ihtiyacımız olacak iki model oluşturalım:

 from django.db import models class Product(models.Model): name = models.CharField(max_length=50) image = models.ImageField(upload_to='products', default='python.png') price = models.IntegerField() description = models.TextField() def __str__(self): return self.name class Order(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE) quantity = models.IntegerField() date = models.DateField(auto_now_add=True) user = models.CharField(max_length=50) def __str__(self): return self.user

Ürün modelinin adı, fiyatı, açıklaması ve bir resim (kaydedildiğinde bir products klasörüne yüklenecektir. Bu, klasör yoksa oluşturulur) sütunlarına sahiptir. order bir product ( products tablosuna bağlı), miktar, tarih ve kullanıcı sütunları bulunur.

Bu bilgilerle Django, uygulama için bir veritabanı şeması oluşturur. Ayrıca, Ürün ve Sipariş nesnelerine erişmek için bir Python veritabanı erişim API'si oluşturur. Django'nun yerleşik bir geçiş aracı vardır, bu nedenle geçişler için harici paketler kullanmanız gerekmez.

Sonraki adım, geçiş komutunu çalıştırmak ve veritabanına geçiş yapmaktır. Ancak bunu yapmadan önce, proje dizinimizde trading bir uygulama olarak kaydetmemiz gerekiyor.

Öncelikle, ticaret dizinini Django'da bir uygulama olarak yapılandırmamız gerekiyor. Django, app.py dosyasında bunu sizin için yaptı. Bu dosya, trading bir uygulama olarak kaydeder ve daha sonra settings.py dosyasında kullanılacaktır.

Şimdi settings.py INSTALLED_APP trading ekleyin. Şöyle görünmelidir:

 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'trading.apps.TradingConf', ]

Terminalde şunu çalıştırın:

 $ python manage.py makemigrations trading $ python manage.py migrate

Not: Sanal ortamınız aktif olmalı ve proje dizini içerisinde olmalısınız.

python manage.py makemigrations trading , ticaret modülünde yapılan değişiklikleri not eder ve model.py ve python manage.py migrate models.py Migrate'deki değişikliklerin migration klasöründe bir dosya oluşturur ve ardından değişiklikleri günceller.

Oluşturulan taşıma dosyasını, 0001_initial.py adlı migration dizininde python manage.py makemigrations trading komutundan 0001_initial.py . Dosya içinde oluşturulacak komutlar olarak sınıfları ve sütunları görebilirsiniz. models.py daha fazla değişiklik yapıldıkça, burada daha fazla dosya oluşturulacaktır.

Yönetici Özellikleri

Mevcut uygulamamızda, uygulamada oluşturulacak ürün ve siparişleri yönetmek için admin özelliklerine ihtiyacımız olacak. Django, bize zaten emrimizde olan yerleşik bir yönetici işlevi sağlar. Yönetici uygulaması(özelliği), INSTALLED_APP listemize de kaydedildi; 'django.contrib.admin' .

Ayrıca, yöneticinin URL'si de URL yapılandırma dosyamız urls.py urlpatterns listesine kaydedilmiştir; path('admin/', admin.site.urls), . admin.py dosyası, modelleri ve modellerde gerçekleştirilecek CRUD eylemlerini kaydetmenizi mümkün kılar.

Yöneticiyi kurmak için bunu terminalde çalıştırın:

 $ python manage.py createsuperuser

Bir kullanıcı adı, e-posta ve şifre girmeniz istenecektir. Bundan sonra, başarıyla bir yönetici oluşturdunuz. Yönetici işlevine başlamak için sunucuyu çalıştırın:

 $ python manage.py runserver

https://127.0.0.1:8000/admin/ adresini ziyaret etmek, bir oturum açma oturumuna yol açacaktır, oturum açtığınızda (oluşturduğunuz kullanıcı adı ve şifre ile) yönetici panosuna yönlendirilirsiniz:

bu, yönetici panosunu gösterir.
Django tarafından sağlanan yönetici panosu. (Büyük önizleme)

Gruplar ve kullanıcılar, yöneticinin kullanıcı yönetimine ve iznine erişmesine izin veren varsayılan yapılandırmalardır. Şimdi modellerimizi kaydedelim.

admin.py aşağıdaki satırları ekleyin:

 from django.contrib import admin # Register your models here. from .models import Product, Order admin.site.register(Product) admin.site.register(Order)

from django.contrib import admin yönetici işlevselliğini içe aktarır ve ardından bir yöneticinin ürünler üzerinde CRUD eylemleri gerçekleştirebilmesi ve kontrol panelinden sipariş verebilmesi için iki sınıfı models.py içe aktardık ve kaydettik.

Modelleri kaydettikten sonra gösterge tablonuz şöyle görünmelidir:

ürünler ve sipariş modeli ile yönetici panosu gösteriliyor.
Yönetici Panosundaki Ürün ve Sipariş modeli. (Büyük önizleme)

Ürün ekleme:

bu, yönetici adminin siteye bir ürün eklediğini gösterir.
Siteye ürün (ayakkabı) ekleyen yönetici. (Büyük önizleme)

Yönetici panelinden sipariş verme:

Yöneticinin sipariş vermesini gösteren resim.
Yönetici ekleme/sipariş verme. (Büyük önizleme)

Kolay Yönlendirme

Her sitenin, son kullanıcı için belirli bilgiler içeren belirli sayfalara yönlendiren rotaya veya URL'lere ihtiyacı vardır. Benzer bilgi veya uygulama koleksiyonlarına belirli bir yoldan erişilir. Dosyalar içinde erişilebilirlik ve iletişim için yolları birlikte gruplandırmaya ihtiyaç vardır. Django bunu sizin için urls.py dosyasında yaptı.

urls.py , settings.py içindeki ROOT_CONF değişkeninden yola çıkan bir dosyadır. Ana URL yapılandırmamızın yapıldığı yer burasıdır. Farklı dosya veya klasörlerde, hatta urls.py dosyasında görünümler oluşturduğumuzda, bunların urlpatterns listesinde yapılandırılmaları gerekir.

Django, dosyada urlpatterns adlı bir liste bekler. ROOT_CONF değişkenindeki dosyayı, urlpatterns listesine yerleştirdiğiniz herhangi bir başka dosyayla değiştirebilirsiniz.

 urlpatterns = [ path('admin/', admin.site.urls), ]

Liste, path veya re-path örnekleri olan nesnelerden oluşur. Her örneğin iki zorunlu parametresi vardır, 'admin/' kalıbı ve bir görünüm veya URL dosyası olan admin.site.urls .

Örnekler ayrıca daha fazla URL yapılandırmasına sahip başka bir dosyaya yönlendiriyor olabilir. Bu okunabilirlik için yapılır.

views.py

Bir arka uç uygulaması için önemli bir ihtiyaç, her bir rotanın eşlendiği görünümlerdir. Django'da, bir uygulama için işlev veya sınıf tabanlı görünümlerinizi views.py dosyasına yazarsınız. Görünüm, bir isteği işleyen ve kullanıcınıza bir yanıt gönderen bir sınıf veya işlevdir.

views.py dosyanızı şu şekilde düzenleyin:

 from django.http import HttpResponse def home(request): return HttpResponse("This is a shopping site for products") def order(request): return HttpResponse("Hello, welcome to our store, browse to our products and order!")

Burada, çağrıldığında cümle döndürmek için iki görünümü (işlev görünümleri) tanımlamada kullanmak için HTTPResponse içe aktardık. def home , birincil adresi ziyaret ettiğinizde ve sipariş URL'sine eriştiğinizde def order çağrılmalıdır.

Görünümlerimizi oluşturduktan sonra onu farklı rotalara (veya urlpatterns ) atamamız gerekiyor. Bu birkaç yolla yapılabilir, aynı dosyada bir urlpatterns listesi oluşturabilir veya trading.views ecommerce_site.urls dosyasına aktarabilir ve yolu oluşturabiliriz.

Bunu yapmanın tercih edilen yolu, bir alt URL yapılandırma dosyası oluşturmak ( trading içinde) ve onu ecommerce_site.urls içine dahil etmektir. trading dizininde bir urls.py dosyası oluşturun. Dizininiz şöyle görünmelidir:

 trading/ __init__.py admin.py apps.py migrations/ __init__.py 0001_initial.py models.py tests.py urls.py views.py

Yeni dosyanıza ( urls.py ) aşağıdaki kodu ekleyin

 from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), path('order/', views.order, name='order'), ]

trading URL'si yapılandırma dosyasını ( urls.py ) proje URL'leri yapılandırma dosyasına kaydedelim,

 from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('trading.urls')) ]

URL kalıplarına erişebilmek için 2. satırda urlpatterns include sınıfını kullanacağız. Ardından bir kalıp seçin ve urls.py dosyasını ticaret dizinine django.urls .

Burada yaptığımız şey, path sınıfını Django'dan ve views.py dosyasından almaktı. Ardından listemiz her görünüm için iki yol örneğinden oluşur. Yani def home https://127.0.0.1:8000/ adresinden çağrılır.

site ana sayfasını ziyaret ettiğinizde gösterilen resim.
Ana sayfayı ziyaret ettiğinizde site. (Büyük önizleme)

Ve def order https://127.0.0.1:8000/order/ adresinden çağrılır.

sipariş URL'sini ziyaret ettiğinizde siteyi gösterir.
Sipariş URL'si ziyaret edildi. (Büyük önizleme)

Not: startproject ve startapp çalıştırma süreci zorunlu değildir, ancak Django tarafından oldukça teşvik edilmektedir. Ve her komutu çalıştırdıktan sonra çalışma rahatlığınıza göre dosya ve klasörler oluşturabilir/taşıyabilirsiniz.

Bağımlılık Ağacı

Django'nun gelen URL'lerden gelen istekleri işleme süreci şu şekildedir:

  1. Django, ROOT_CONF değişkeninde URL'lerinizin kök konumunu (yolunu) arar.
  2. Django, sağlanan yolda verilen python dosyasını yükler. Ve urlpatterns değişkenini bulur, bu, tüm django.urls.path() ve/veya django.urls.re_path() örneklerini içeren bir listedir.
  3. Listede, Django sırayla gider ve eşleşen bir URL arar.
  4. Python, görünümü içe aktarır ve çağırır (işlev tabanlı veya sınıf tabanlı görünüm). Hangi HTTP isteği ile iletilir.
  5. Görünüm, iletilen isteği ve bilgileri işler ve bir mesaj/şablon döndürür veya başka bir görünüme yönlendirir.
  6. Hiçbir URL kalıbı eşleşmezse veya bu sürecin herhangi bir noktasında bir istisna ortaya çıkarsa, Django uygun bir hata işleme görünümünü çağırır.
Django'nun istekleri nasıl ele aldığını gösteren ağaç.
Django istek işleme. (Büyük önizleme)

Çözüm

Komut satırı olmadan Django için dosya oluşturma olasılığını öğrendik. Ayrıca bir Django Projesinin avantajlarını ve yapı taşını da öğrendik. Django, basitlik yaratmak amacıyla arka uç projeleri oluşturmak için harika bir araçtır.

Bu eğitimin kodunu GitHub'da kontrol edebilirsiniz.

Kaynaklar

  • Django'da şifre yönetimi
  • Django: Başlarken
  • Django: Ayarlar
  • O'Reilly'den Hafif Django