Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Visual Studio 'da Django web çerçevesiyle çalışmaöğretici serisinin 2. Adımı verilmiştir.
Visual Studio, projeleriniz için daha kapsamlı bir başlangıç noktası sağlayan proje şablonlarından Django uygulamaları oluşturmanıza olanak tanır. öğretici serisinin 1. Adımı , bir veya daha fazla Django web uygulamasını desteklemek üzere bir Django web projesi için site düzeyinde yapılandırma dosyalarının nasıl oluşturulacağını açıklar. 2. Adımda, birden çok işlenmiş görünüme sahip tek sayfalı ilk Django web uygulamanızı oluşturmak için Django web projenize içerik eklersiniz.
Öğreticideki Adım 2'de şunları öğreneceksiniz:
- Tek sayfalı bir Django uygulaması oluşturma
- Uygulamayı Django projesinden çalıştırma
- HTML kullanarak görünüm işleme
- Django sayfa şablonu kullanarak bir görünüm oluştur.
Önkoşullar
1. Adım: Visual Studio çözümü ve Django projesi oluşturma.adımında oluşturulmuş bir Visual Studio çözümü ve Django projesi.
Django şablon sürümleri, Visual Studio projeleri ve Django projeleri ve Mac'te Python geliştirme hakkında ayrıntılı bilgi için bu öğretici serisinin 1. Adımındaki Önkoşullar bölümünü gözden geçirin.
Varsayılan yapıya sahip Django uygulaması oluşturma
Django uygulaması, belirli bir amaca yönelik bir dizi ilgili dosya içeren ayrı bir Python paketidir. Django projesi, bir web sunucusunun tek bir alan adından birçok ayrı giriş noktası (veya rotalardır) sunmasına yardımcı olan birçok uygulama içerebilir. Örneğin, contoso.com gibi bir etki alanı için Django projesi www.contoso.com yolu için bir uygulama, support.contoso.com yolu için ikinci bir uygulama ve docs.contoso.com yolu için üçüncü bir uygulama içerebilir. Bu senaryoda Django projesi, urls.py ve settings.py dosyalarındaki site düzeyinde URL yönlendirme ve ayarlarını işler. Her uygulamanın kendi iç yönlendirmesi, görünümleri, modelleri, statik dosyaları ve yönetim arabirimi aracılığıyla kendine özgü bir stili ve davranışı vardır.
Django uygulamasının geliştirilmesi genellikle standart bir dosya kümesiyle başlar. Visual Studio, bir Django projesinde bu dosyaları içeren bir Django uygulamasını başlatmak için şablonlar sağlar. Aynı amaca hizmet eden tümleşik bir menü komutu da vardır.
Uygulama oluşturmak için şablonu kullanma
Uygulamayı şablondan oluşturmak için şu adımları izleyin:
Çözüm Gezgini'nde, Visual Studio projesine (BasicProject) sağ tıklayın ve Ekle>Yeni Öğe'yi seçin.
Yeni Öğe Ekle iletişim kutusunda Django 1.9 Uygulama şablonunu seçin:
Uygulamayı AdHelloDjangoAppgirin.
'ı seçin, ardından'i ekleyin.
Uygulama oluşturmak için tümleşik menü komutunu kullanma
Tümleşik Django menü komutunu kullanarak uygulamayı oluşturmak için şu adımları izleyin:
Çözüm Gezgini'ndeVisual Studio projesine (BasicProject) sağ tıklayın ve >Django uygulaması ekleöğesini seçin.
Django Uygulama Ekle dialog penceresinde, uygulama adı olarak HelloDjangoApp girin:
Tamamseç.
Django uygulama klasörünü keşfetme
HelloDjangoApp uygulamasını oluşturduğunuzda Visual Studio, Visual Studio projenizde aynı ada sahip bir klasör oluşturur:
Klasör aşağıdaki öğeleri içerir:
"HelloDjangoApp" adını kullandığınızda, apps.py dosyasının içeriği aşağıdaki gibi görünür:
from django.apps import AppConfig
class HelloDjangoAppConfig(AppConfig):
name = 'HelloDjangoApp'
Visual Studio'da veya komut satırından uygulama oluşturma
Add>Django app komutu ve Add>New Item komutu (Django uygulama şablonuyla birlikte) manage.py startapp <app_name>Django CLI komutuyla aynı dosyaları üretir. Visual Studio'da Django uygulamasını oluşturmanın avantajı, uygulama klasörünün ve tüm dosyalarının projeye otomatik olarak tümleştirilmesidir. Projenizde istediğiniz sayıda uygulama oluşturmak için aynı Visual Studio komutunu kullanabilirsiniz.
Uygulamaya özgü sayfa görünümleri ekleme
Geçerli projenizi Visual Studio'da Hata Ayıklama>Hata Ayıklamayı Başlat (F5) veya ana araç çubuğunda web sunucusu seçerek çalıştırırsanız varsayılan Django sayfasını görürsünüz. Web uygulamalarının genellikle farklı görünümlere sahip birden çok sayfası vardır. Uygulama URL adresi için benzersiz bir yol, uygulamadaki her sayfayı tanımlar.
Uygulamaya özgü sayfa görünümlerini tanımlamak ve uygulamayı Django projesine eklemek için şu adımları izleyin:
Visual Studio projenizin HelloDjangoApp alt klasöründe, views.py dosyasının içeriğini aşağıdaki kodla değiştirin:
from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse("Hello, Django!")Bu kod, gerekli işleme ve HTTP tanımlarını içeri aktarır ve
indexadlı bir görünüm tanımlar.Visual Studio projenizin BasicProject alt klasöründe, urls.py dosyasını aşağıdaki kodla eşleşecek şekilde değiştirin. Öğretici açıklamaları istediğiniz gibi geçerli dosyada tutabilirsiniz.
from django.urls import include, re_path import HelloDjangoApp.views # Django processes URL patterns in the order they appear in the array urlpatterns = [ re_path(r'^$', HelloDjangoApp.views.index, name='index'), re_path(r'^home$', HelloDjangoApp.views.index, name='home') ]
Her URL deseni, Django'nun belirli site göreli URL'lerini yönlendirdiği görünümleri (https://www.domain.com/URL adresini izleyen yol bölümü) açıklar:
-
urlPatternstanımında normal ifade^$ile başlayan ilk giriş,/site kök sayfasının yönlendirmesidir. -
^home$ikinci girdi, uygulama/homesayfasına yönlendirir.
Bu örnek koddaki tanımın aynı görünümde birden çok yönlendirmeye sahip olabileceğinizi gösterdiğine dikkat edin.
(r) ön ekiyle ham yol dizelerini tanımlama
Python'daki bir yol dizesindeki r öneki "ham" anlamına gelir. Bu ön ek, Python'a yol dizesi içindeki hiçbir karakterden kaçış olmamasını emreder. Yol dizeleri için normal ifadeler birçok özel karakter kullanır. Yol dizesindeki r ön ekinin okunması, \kaçış karakterinden daha kolaydır.
Yollarda şapka işareti (^) ve dolar ($) karakterleri kullanın
URL desenlerini tanımlayan normal ifadelerde şapka işareti simgesi ^ "satır başlangıcı" ve dolar işareti $ "satır sonu" anlamına gelir. Url'lerde bu karakterlerin site köküne göre çeşitli kullanımları vardır (uygulama adresini izleyen bölüm https://www.domain.com/):
- Normal ifade
^$etkili bir şekilde "boş" anlamına gelir ve uygulamanın site kökü için tam URL adresiyle eşleşirhttps://www.domain.com/. - Desen
^home$, tam olarakhttps://www.domain.com/home/ile eşleşir; bu,/hometarafından takip edilen site yoludur. (Django desen eşleştirirken sondaki '/' işaretini kullanmaz.) -
$yol dizesi gibi bir normal ifadede sondaki dolar işareti^homekullanmıyorsanız, URL desen eşleştirmesi ,home,home,homeworkgibihomesteadile başlayanhome192837için geçerlidir.
Farklı normal ifadelerle denemeler yapmak için pythex.orgadresinde regex101.com gibi çevrimiçi araçları deneyin.
Django projesinden uygulama çalıştırma
Uygulamaya özgü içerik ekledikten sonra uygulamanızı yeniden çalıştırın ve tarayıcıda yol görünümlerini denetleyin:
Uygulama tarayıcıda açıldığında, tarayıcıda hem
/(site kökü) hem de/homeURL yollarının sayfa görünümlerini denetleyin. Her iki rota için de uygulama tarayıcıda Hello, Django! iletisini görüntüler.İşiniz bittiğinde konsol penceresinde Ctrl+C ve ardından uygulamayı durdurmak için herhangi bir tuş seçin. Ayrıca hata ayıklama>hata ayıklamayı durdurseçebilirsiniz.
Uygulama için tüm açık tarayıcı pencerelerini kapatın.
Değişiklikleri kaynak denetimine işleme
Django uygulama kodunu güncelleştirdikten ve güncelleştirmeleri test ettikten sonra değişikliklerinizi gözden geçirebilir ve kaynak denetimine işleyebilirsiniz:
Ctrl+S klavye kısayolu gibi proje dosyalarınızdaki değişiklikleri kaydedin.
Git denetimleri çubuğunda, Git Değişiklikleri penceresini açmak için kaydedilmemiş değişiklikleri (kalem 11) seçin:
Git Değişiklikleri penceresinde bir işleme iletisi girin ve Tümünü İşle seçin:
İşleme tamamlandığında, Visual Studio komut <karma> yerel olarakoluşturuldu iletisini görüntüler.
(İsteğe bağlı) Kaydedilmiş değişiklikleri uzak deponuza gönderin:
Git denetimleri çubuğunda giden/gelen işlemeleri (1/0 okları) seçin.
Senkronizasyon (Çek ve Gönder) ya da Göndermeseçeneğini belirleyin.
Uzak depoya göndermeden önce birden çok yerel commit de biriktirebilirsiniz.
Ctrl+S klavye kısayolu gibi proje dosyalarınızdaki değişiklikleri kaydedin.
Visual Studio'nun sağ alt kısmındaki kaydedilmemiş değişiklikleri (11. kalem) seçin; bu, ekip gezgini açılır:
Takım Gezgini'nde, "Django uygulamasına özgü sayfa oluştur" gibi bir işlem mesajı girin ve Hepsini İşleseçeneğini belirleyin.
İşlem tamamlandığında, Visual Studio yerel olarak oluşturulan işleme <hash> iletisini görüntüler. Değişikliklerinizi sunucuyla paylaşmak için eşitleyin.
(İsteğe bağlı) Kaydedilmiş değişiklikleri uzak deponuza gönderin:
Ekip Gezgini, Eşitle'yiseçin.
Giden Commit'ler genişletin ve Gönderseçin.
Uzak depoya göndermeden önce birden çok yerel commit de biriktirebilirsiniz.
Bu öğretici serisindeki sonraki yordamlar için, kaynak denetiminde değişiklikleri işleme adımları için bu bölüme başvurabilirsiniz.
Sayfaları ve görünümleri işlemek için şablonları kullanma
index dosyasındaki işlevi, Django uygulama sayfası için düz metin bir HTTP yanıtı oluşturur. Çoğu gerçek dünya web sayfası, genellikle canlı verileri içeren zengin HTML sayfalarıyla yanıt verir. Geliştiricilerin görünümleri işlev kullanarak tanımlamasının birincil nedeni, içeriği dinamik olarak oluşturmaktır.
HttpResponse yönteminin bağımsız değişkeni yalnızca bir dizedir. Dinamik içerik kullanarak bir dize içinde herhangi bir HTML oluşturabilirsiniz. İşaretlemeyi verilerden ayırmak en iyisi olduğundan, işaretlemeyi bir şablona yerleştirmek ve verileri kodda tutmak daha iyidir.
Görünümleri satır içi HTML kullanacak şekilde ayarlama
Görünüm işlemeyi, sayfa için bazı dinamik içeriğe sahip satır içi HTML kullanacak şekilde dönüştürün:
Visual Studio projenizin HelloDjangoApp alt klasöründe views.py dosyasını açın.
indexişlevini aşağıdaki kodla değiştirin (mevcutfromdeyimlerini koruyun):from datetime import datetime def index(request): now = datetime.now() html_content = "<html><head><title>Hello, Django</title></head><body>" html_content += "<strong>Hello Django!</strong> on " + now.strftime("%A, %d %B, %Y at %X") html_content += "</body></html>" return HttpResponse(html_content)Düzeltilen
indexişlevi, sayfayı her yenilediğinizde güncelleştirilen dinamik içerik kullanarak bir HTML yanıtı oluşturur.Değişikliklerinizi kaydedin ve uygulamanızı yeniden çalıştırın. Sayfada artık geçerli tarih ve saatin yanı sıra "Hello Django! İletiyi.
Tarih ve saatin güncelleştirildiğini onaylamak için sayfayı birkaç kez yenileyin. İşiniz bittiğinde uygulamayı durdurun.
Sayfa görünümleri için HTML şablonu oluşturma
Kodda HTML oluşturmak küçük sayfalarda düzgün çalışır. Ancak, sayfalar daha karmaşık hale geldikçe sayfanızın statik HTML bölümlerini (CSS ve JavaScript dosyalarına yapılan başvurularla birlikte) "sayfa şablonları" olarak korumanız gerekir. Ardından dinamik, kod tarafından oluşturulan içeriği sayfa şablonlarına ekleyebilirsiniz. Önceki bölümde, yalnızca now.strftime çağrısındaki tarih ve saat dinamiktir; bu da diğer tüm içeriğin bir sayfa şablonuna yerleştirilebileceği anlamına gelir.
Django sayfa şablonu, "değişkenler" olarak adlandırılan birden çok değiştirme belirteci içeren bir HTML bloğudur. {{ ve }} ile gösterilen eğik parantezler, {{ content }}gibi değişkenlerin başlangıcını ve sonunu belirtir. Django'nun şablon modülü, değişkenleri kodda sağladığınız dinamik içerikle değiştirir.
Sayfa işleme işlemini HTML şablonu kullanacak şekilde dönüştürmek için şu adımları izleyin:
Visual Studio projenizin HelloDjangoApp alt klasöründe settings.py dosyasını açın.
INSTALLED_APPStanımındaki uygulama başvurularınıHelloDjangoAppuygulama adını içerecek şekilde güncelleştirin. Uygulama adını listedeki ilk girdi olarak ekleyin:INSTALLED_APPS = [ 'HelloDjangoApp', # Existing entries in the list ... ]Uygulamayı listeye eklemek, Django projesine HelloDjangoApp adlı ve bir uygulama içeren bir klasör olduğunu bildirir.
TEMPLATESnesne yapılandırma ayarlarıAPP_DIRS'inTrueolmasını onaylayın.'APP_DIRS': True,Bu deyim, Django'ya yüklü bir uygulamanın şablonları klasöründe şablonları aramasını sağlar. (Bu deyim varsayılan olarak tanıma eklenmelidir.)
HelloDjangoApp alt klasöründe templates/HelloDjangoApp/index.html sayfa şablonu dosyasını açın.
Dosyanın yalnızca bir değişken içerdiğini onaylayın,
{{ content }}:<html> <head> <title></title> </head> <body> {{ content }} </body> </html>{{ content }}deyimi, kodda sağladığınız bir değerin yerleştirileceği bir yer tutucu veya değiştirme belirtecidir (aynı zamanda şablon değişkeniolarak da adlandırılır).Visual Studio projenizin HelloDjangoApp alt klasöründe views.py dosyasını açın.
indexişlevinidjango.shortcuts.renderyardımcı işlevini kullanan aşağıdaki kodla değiştirin (mevcutfromdeyimlerini koruyun):def index(request): now = datetime.now() return render( request, "HelloDjangoApp/index.html", # Relative path from the 'templates' folder to the template file { 'content': "<strong>Hello Django!</strong> on " + now.strftime("%A, %d %B, %Y at %X") } )renderyardımcı işlevi, sayfa şablonlarıyla çalışmak için basitleştirilmiş bir arabirim sağlar. Bu işlevin üç bağımsız değişkeni vardır:- İstek nesnesi.
- Uygulamanın şablonları klasöründeki şablon dosyasının göreli yolu. Şablon dosyası, uygunsa desteklediği görünüm için adlandırılır.
- Şablonun başvurduğu değişkenlerin sözlüğü. Şablondaki bir değişkenin
{{ object.property }}olarak başvurabileceği nesneleri, sözlüğe ekleyebilirsiniz.
Proje değişikliklerinizi kaydedin ve uygulamayı yeniden çalıştırın.
Şablon oluşturma altyapısı (Jinja) HTML içeriğini otomatik olarak kaçış karakterlerine dönüştürdüğü için,
\<strong>değeri içindeki satır içi HTML yazımı (content...) 'nin HTML olarak işlenmesine neden olmaz. Otomatik kaçış, ekleme saldırılarına yönelik yanlışlıkla oluşan güvenlik açıklarını önler.Geliştiriciler genellikle bir sayfadan giriş toplar ve şablon yer tutucusu kullanarak bunu başka bir sayfada değer olarak kullanır. Kaçış, HTML'yi koddan uzak tutmanın en iyisi olduğunu da anımsatır.
İşiniz bittiğinde uygulamayı durdurun.
Ayrı yer tutucuları kullanın
HTML işaretlemesi içindeki her veri parçası için ayrı yer tutucular kullanabilirsiniz. Ardından, index işlevinizi belirli yer tutucu değerlerini sağlayacak şekilde yeniden ayarlayın:
şablonları/HelloDjangoApp/index.html sayfa şablonu dosyasının içeriğini aşağıdaki işaretlemeyle değiştirin:
<html> <head> <title>{{ title }}</title> </head> <body> <strong>{{ message }}</strong>{{ content }} </body> </html>Bu HTML işaretlemesi bir sayfa başlığı ekler ve tüm biçimlendirmeyi sayfa şablonunda tutar.
HelloDjangoApp/views.py dosyasında
indexişlevini aşağıdaki kodla değiştirin:def index(request): now = datetime.now() return render( request, "HelloDjangoApp/index.html", # Relative path from the 'templates' folder to the template file # "index.html", # Use this code for VS 2017 15.7 and earlier { 'title' : "Hello Django", 'message' : "Hello Django!", 'content' : " on " + now.strftime("%A, %d %B, %Y at %X") } )Bu kod, sayfa şablonundaki tüm değişkenler için değerler sağlar.
Değişikliklerinizi kaydedin ve uygulamanızı yeniden çalıştırın. Bu kez düzgün işlenmiş çıkışı görmeniz gerekir:
Değişikliklerinizi kaynak denetimine kaydedebilir ve uzak deponuzu güncelleştirebilirsiniz. Daha fazla bilgi için bkz. Değişiklikleri kaynak denetimine onayla.
Ayrı sayfa şablonları
Şablonlar genellikle ayrı HTML dosyalarında tutulur, ancak satır içi şablon da kullanabilirsiniz. İşaretlemesi ve kod arasında temiz bir ayrım yapmak için ayrı dosyalar önerilir.
Şablonlar için .html uzantısını kullanma
Sayfa şablonu dosyalarının .html uzantısı tamamen isteğe bağlıdır.
render_template işlevinin ilk bağımsız değişkeninde dosyanın tam göreli yolunu her zaman tanımlayabilirsiniz. Ancak Visual Studio (ve diğer düzenleyiciler) genellikle .html dosyalarıyla kod tamamlama ve söz dizimi renklendirme gibi özellikler sağlar ve bu da sayfa şablonlarının HTML olmamasından daha ağır basar.
Bir Django projesiyle çalışırken, Visual Studio düzenlediğiniz HTML dosyasının aslında bir Django şablonu olup olmadığını otomatik olarak algılar ve belirli otomatik tamamlama özellikleri sağlar. Django sayfa şablonu açıklamasını ({#) girmeye başlarsanız, Visual Studio otomatik olarak kapanış #} karakterleri sağlar.
Açıklama Seçimini ve Açıklama Seçimini Kaldır komutları (Düzenle>Gelişmiş menüsünde), HTML açıklamaları yerine şablon açıklamalarını kullanır.
Sorunları giderme
Uygulamanızı çalıştırdığınızda, uygulamanızın şablon dosyasıyla ilgili sorunlarla karşılaşabilirsiniz. Aşağıdaki noktaları gözden geçirin ve Django proje yapılandırmanızın doğru olduğundan emin olun.
Şablon bulunamadı
Django veya Visual Studio bir Şablonu Bulunamadı hatası görüntüleniyorsa, uygulamanızın INSTALLED_APPS listesinde olduğundan emin olun. Bu liste, Visual Studio projenizin uygulama alt klasörünün altındaki settings.py dosyasındadır (örneğin, HelloDjangoApp ). Listede uygulamanız için bir giriş yoksa Django, uygulamanın şablonları klasörüne bakmayı bilmez.
Yinelenen şablon yapısı
Django, render işlevinde başvuruda bulunılan bir şablonu ararken göreli yol ile eşleşen ilk dosyayı kullanır. Aynı projede şablonlar için aynı klasör yapılarıyla birden çok Django uygulamanız varsa, büyük olasılıkla bir uygulama istemeden başka bir uygulamadan şablon kullanabilir. Bu tür hataları önlemek için, yinelemeyi önlemek için her zaman uygulamanın şablonları klasörün altında uygulamanın adıyla eşleşen bir alt klasör oluşturun.