Merhaba ve
herkes için başka bir Django'ya hoş geldiniz.
Yani muhtemelen bu noktada otomobil
göreviniz üzerinde çalışıyorsunuz.
Bu, ilk gerçek oluşturma,
okuma, güncelleme ve silme atamalarımızdır.
Bu görevin çoğu,
DJ4E Örnekleri'nde size verdiğim koduya bakmak ve içeri çekmek.
Bu atama için depoyu klonlamayın.
DJ4E Örnekleri bir canavar.
İçinde her türlü şey var,
çok karmaşık ve istemiyorsun.
Güzel, temiz bir uygulama ile başlamak istiyorsun.
Önceki görevin
gerçekten küçük bir uygulama yapmaktı,
bu uygulamayı genişleteceğiz.
İşte bu yüzden zaten
bu DJ4E projelerine sahip olduğunuz her yerde.
Yani
bu görev,
örnek kodu kullanarak bunu evrimleştirmek.
Ama
asıl yapacağım şey,
örnek kodu gözden geçireceğim çünkü
bu örnek kodda yeni kavramlar var.
Yani bu,
ödevin nasıl yapılacağından çok örnek kodla ilgili bir ders.
Ama en önemlisi,
her satırı
anlamalısın çünkü
önümüzdeki haftalarda yazacağımız her program bu CRUD için bir varyasyondur.
Yani bu varsayılan
görünümler, 404 olsun,
tüm bu şeyler birçok şeyin temelini oluşturuyor.
Bulacağımız şey
,
Django'daki her şey gibi bu kodu yazmanın doğru yolu
gerçekten küçük ve özlü.
O zaman şifreye bir göz atalım.
Pekala, hadi devam edelim ve şifreyi araştıralım.
Araçlara git ve giriş yapmalısın.
Yani düşünceye göre iki masa var.
Bir marka tablosu var.
Bu yüzden bir marka ekleyeceğim
ve sonra bir oto ekleyeceğim,
ve bunun en güzel yanı, Neon
1, kilometre 1,234, SakalCard.
Sonra havalı bir açılır menüm var.
Yani burada bir sürü form
var. Açılışlar var. Çok fazla
bir ilişki var.
Sonra bu listem var ve güncelleyip silebilirim.
Demek tam CRUD burada.
Böylece markaları ekleyebiliriz
, markaları görüntüleyebiliriz,
otomobiller ekleyebiliriz.
Yani yazmak zorunda olduğun şeye çok yakın,
sadece gidip kapma ve diğer şeyler.
O zaman bir göz atarak başlayalım.
DJ4E numunelerimde oturuyorum.
Eğer bakarsanız,
bir proje altında benim çeşitli uygulamaları görebilirsiniz.
Araçlarımız var,
ama gerçekten kimlik doğrulama koduyla başlamak istiyorum,
eğer numunelere geri dönersem,
oturumu kapatmama izin ver, giriş yapmamı sağlayan kod.
Yani çıkış yapıp yapmadığımı görmek için doğruca otolara gidersem.
Ben doğrudan otomobil gittiğinde ne yaptığını fark edeceksiniz, o
bana giriş yolları olduğunu,
ve daha sonra bir sonraki otomatik geri dönmek için.
Yani bu görünüm
otomobiller, /autos giriş karıştırma ile kendini korumalı.
Daha sonra giriş yapacağız,
giriş bilgileriniz böyle görünmeyecek,
ancak numunelerde sahip olduğum bu.
Henüz güzelleştirmek zorunda değilsin,
yaklaşan ödevler her şeyi güzel yapacak.
Şimdi otomobillerdeyiz ve giriş yaptık.
Uygulamanızın burada daha fazla şey olması gerekiyor,
ama ben
size
bu otomobillerdeki görüşlerin özünü göstermekle daha çok ilgileniyorum.
Otomatik giriş işleminin nasıl çalıştığını kısaca gözden geçirelim.
Yani dj4e-samples/settings.py
dosyasına bakarsam, bu yetkinin takılı olması gerekir.
Yani bu temel olarak
Django'dan gelen bir grup kod, bazı görüşler vb.
Ve
başlangıç projeni yaptığınızda başından beri oradaydı.
Tabii, o zaman buralarda bir yerde,
otomobillere sahip olmalıyız. Araçlar her neresiyse.
Evet, otomobil uygulaması
yapılandırması. Arabalar uygulamasını içeri çekmelisin.
dj4e-samples/urls.py dosyasına
bakarsam, burada arabaları bulabilirim
ve temelde
“En üst seviyede, otomobillerin
altındaki her şey
autos.py dosyasına atanır.
Ama sonra hesaplar da var.”
Hatırlarsanız,
bu bizim için Django'dan gelen bir grup görüş,
bizim için önceden kurulmuş.
Yapmamız gereken şey,
buna
registration.html ismiyle bir şablon vermemiz gerekiyor.
Sanırım bunu evde/şablonlar/kayıtlarda buldum.
Evet, biliyorum. Yani aslında iki giriş var.
login.html olarak gerçekten basit bir tane var.
Başlamanı önerdiğim şey bu.
Daha sonra sosyal giriş bilgilerini kullanacağız. Bu çok basit.
Django formları özelliğini kullanan bir giriş sayfası.
Hatalar oluşursa,
bu bir doğrulama hatası olduğu anlamına gelir.
Geri geldi ve
bu sayfayı yeniden görüntüledi ve size bir hata gösterdi.
Sonra
giriş adı ile bir görünüme ters arama olan bir URL ile basit bir post formu yapmak.
Sonra CSRF jetonunu koyarız ve sonra formu alırız
ve bunu sadece paragraf etiketleriyle yapıyorum.
Bu basit bir giriş,
gösterdiğimiz gerçek bir giriş değil.
Sonra bir sonraki, geçmeniz gereken gizli bir değerdir,
böylece gerçekten başarılı bir şekilde giriş yaptığınızda,
otomobillere geri dönmeyi bilir.
Her şey bittiğinde,
giriş yapıldıktan sonra buraya geri gelir.
Böylece kayıt/giriş,
bunu uygulamalarınızdan herhangi birine koyabilirsiniz,
ancak registration/login.html adını vermek istersiniz.
Yani gerçekten hızlı bir göz
atıp ev/şablonlara gidersem,
bunlar tüm şablonlar.
Ben bir ls yaptığınızda, Eğer
bir ev olduğunu göreceksiniz/şablonlar/ev ve bir ev/şablonlar/kayıt.
Burada birden fazla klasöre sahip olabilirsiniz.
Kayıtta ne olduğuna bakarsam,
bu basit girişime sahip olduğumu ve daha sonra
bize
GitHub giriş yeteneklerini verecek daha karmaşık bir giriş yaptığınızı görürsünüz.
Yani bunun anlamı, giriş kullanımı sosyal.
Önemli olan bu şablonların altında,
yalnızca bir alt klasöre sahip olmanız gerekmez,
birden fazla alt klasöre sahip olabilirsiniz.
Yani
biz
sadece bir saniye göreceğiz giriş mixin eklemek için görüşlerimizi söylediğinizde, bunu yapmak için gerekli yapılandırma olduğunu.
Giriş miksinini kullanmak için girişteki görüşlerimizi anlatırız,
daha sonra şablonun nereden alınacağını bilir.
Bu sadece bir parçası ve
talimatların nasıl yapılacağını söylüyor.
Yani inşa edeceğiniz herhangi bir uygulama
veya inşa edeceğiniz herhangi bir proje,
bu ayarları py
, urls.py koymak ve sonra şablonu yapmak zorunda.
Sonra
giriş mixin'i kullanmaya başlamalısınız ve sonra her şey
sihirli bir şekilde bir araya gelmeye başlar.
Yani gerçek otomobil uygulamasına bir göz atalım.
Burada birkaç farklı şeye bakacağız, otomatik/urls.
Çok terminalli bir sekme yapacağım,
böylece dosyalar arasında hızlıca geçiş yapabilirim.
Muhtemelen benden daha iyi bir metin editörünüz vardır.
Yani URL'lerim var,
autos/views.py dosyasına bir göz atacağım.
Sonra autos/model.py dosyasına bakacağım.
Sonra autos/forms.py dosyasına bakacağım.
Öyleyse bu dört dosya,
urls, görünümler, modeller, formlar üzerinde çalışalım.
Muhtemelen önce mankenleri yapalım.
Yani bu oldukça açık.
Make Objesi dersi yapacağız.
İçinde
bazı doğrulayıcıların olduğu bir karakter alanı olacak. Bununla
formlarla oynuyoruz.
Doğrulayıcıları modellere yerleştirebilirsiniz.
Daha önce formda doğrulayıcıları gördük,
ancak temel olarak,
en az iki karakter olmadıkça bu veritabanı tablosuna gelen verileri kabul etmeyeceğiz diyen bir doğrulayıcı var.
Bu işi bir süredir yapıyorsun.
Temel olarak,
bir model nesneyi gerçek bir marka olarak alır ve yazdırırsanız,
hangi alanlardan hangisinin,
bu durumda, sadece bir alan olduğunu söyler.
Yani bu sadece bir
model nesneyi bir ipe dönüştürdüğümüzde
nasıl göründüğüne biz karar veririz.
Sonra bir otomobilimiz var ve
bir MinLengthValidator ile bir takma adı
var, maksimum uzunluğu 200, ve kilometre, bir tamsayı alanı, bir yorum,
bir 300 karakter alanı,
ve sonra da yabancı bir anahtar.
Bu bire çok ya da
çok-bir ilişki olarak, çok-çok değil, sadece yabancı bir anahtar yapmak için.
Sonra on_delete
CASCADE gidiyoruz, bu gerçekten bir marka
silerseniz, ilgili otomatik girişler
otomatik olarak silinir.
Yani bu oldukça basit bir model,
aslında çok, çok basit.
Bir kez daha, her zaman
bu _str_ (self) tanımlıyoruz, böylece
sadece yönetici
arayüzünde olduğu gibi gösteriyorsanız veya sadece
yazdırıyorsanız veya
modelin kendisini bir dizeye dönüştürüyorsanız,
kullanılması gereken bu alanlar arasındaki alanın takma alan,
sadece son kullanıcılara göstermek için.
Yani model dosyası bu.
Sıradaki form dosyasına bakalım.
Yani form dosyası ilginç,
çünkü formlar gördük ki
sadece kendi başlarına şekiller,
ama bu özel bir
form ve sonra bir ModelForm.
Bunun içinde, normalde diğer modellerde,
tüm bu alanlara
sahiptik ve onları koyduk ve
bir
karakter alanımız olan PositiveIntegerField olan bir model dosyasına çok benziyordu.
Ama temel olarak söylediğimiz şey, biliyor musun?
Burada bir form oluşturacağız.
Gerçekten, tek istediğimiz
Make modelindeki tüm alanları alıp alan oluşturmaktır.
Yani bir form ve bir model iki farklı şeydir.
Form
, görünüm ve şablon arasında geçen bir şeydir
ve gördüğünüz gibi,
otomatik olarak modellere girer,
bu da tüm alanları yapmak gibidir.
Form
nesnelerinin modellerle ilişkilendirilmesi gerekmediği için form oluşturalım.
Ama bu durumda, bir
modelden bir form nesnesi elde edeceğiz.
Formu genişletmek yerine ModelForm'u genişletiyoruz.
Yani bu bir
ModelForm'un sahip olması gereken, ve bu sadece bazı veriler, tüm alanlarımızı çekeceğimiz modelin Make modeli olduğunu ve sadece bir şey olduğunu söylüyor.
İşte bu. Yani bu otomatik
bir form oluşturuyor, eğer
onu değiştirirsek ve buraya başka bir alan eklersek,
o zaman bu form otomatik olarak bir alana sahip olacak.
Ona alanların bir listesini verebilirsin,
“
Bana hepsini ver” demek için bir işaret gibidir.
Şu
anda oluşturulan ve
güncellenen ya da kullanmak istemediğiniz bir şey gibi bazı dahili şeyler olabilir.
Bu bir form, formların nasıl çalıştığını hatırla.
Bunu daha önce hallederiz. URL'lerimize bir göz atalım.
Şimdi bunların çoğu
yaptığımız şeylere oldukça benzer görünüyor.
Temel olarak bir ana masamız var,
ki bu bizim otomobil masamız,
ve arama masamız, ki bu da bizim markalarımızdır.
Sonra üç şey
var,
tüm otomobiller listesi ana liste görünümü var.
Tüm markaları listeleyen ana Make listesi görünümü vardır.
O zaman
birincil anahtarı olmayan yeni bir tane yapabiliriz,
çünkü yaratılan fikirlerin
bir kısmı
birincil anahtar oluşturacak olan yeni bir şey yapmaktır.
Sonra güncellememiz ve silmemiz gerekecek.
Bu yüzden bir okuma, oluşturma, güncelleme, silme var.
Yani tam olarak güvenilir değil,
ama bu dört şeyi de görüyorsunuz.
Böylece görüşlerimiz var
ve bu görüşleri adlandırıyoruz, böylece
görüşlerimizde
kendileri ve şablonumuzda referans
verebiliriz, böylece aralarında bağlantı kurabiliriz.
Yani bunlar oldukça
basit ve o kadar da farklı değil.
Böylece views.py dosyasındayken eğlence olmaya başlar.
Yani giriş mixin,
z yürüyüş yazarından
hatırlarsanız, bunu bir görünüme
eklersiniz ve sadece temelde
oturum açmadığınız sürece bu görünüme
ulaşamayacağınızı ve oturum açmadıysanız,
login.html dosyasına çarpar ve sonra geri sıçrama Bitti.
Yani LoginRequiredMixin yapmamız gereken tek şey.
Yazar z örneğine
gidersen, bunu elle yaptığım gibi göreceksin.
Elle yapmak
istemiyorsan, sadece giriş miksini ara.
Şimdi, bu ana görünüm bir liste görünümü
ve bu yüzden gidip
bunun neye benzeyeceğine bir göz atalım.
Bu Liste görünümüdür.
Bu yüzden ne kadar çok denetimimiz olursa olsun,
bu listeyi
inceleyeceğiz, veritabanından tüm denetimleri alacağız.
Sonra bir otomatik bağlantı eklemek olacak,
daha sonra bir görünüm
var kaç markaları sayısı ile bağlantı yapmak ve bir marka eklemek.
O zaman araba şablonlarına
, tekrar arabalara ve otomatik listeye gireyim.
Yani bunu yapan şablon bu.
Elimizde bir kaç şey var,
otomatik bir liste alıyoruz.
Şimdi bunların isimleri size zorlanmıyor,
ama bir anda ortaya çıkan sözleşmeler var,
gerçekten yararlı görüneceğiz.
Bu yüzden otomatik bir liste alacağız.
Görüşlerimize geri
dönersek, söylediğimizi görüyoruz,
tüm nesneleri otomatik tablodan alın,
tüm otomatik sınıf nesneleri hepsini geri alır,
auto_list olarak bağlamda geçmiş.
Şimdi aynı zamanda
bu küçük sayımı gösterebilmek istiyoruz, bu iki numara,
o yüzden soruyoruz,
tüm nesneleri yap ama bana bir listesini vermeyin,
sayın ve bana bir numara verin.
Yani sayım orada sıkışmış ve
saymak sıfırdan büyük olup olmadığını göreceksiniz yapmak.
Reklamı ve otomatik düğmesini
gösterebiliriz ve ayrıca bir yerde marka sayısını gösterir,
tüm markaları görüntüleyebilir, bir marka ekleyebilir
ve marka sayısı buraya gelir.
Bu da içine koyduğumuz başka bir şey.
Geçeceğimiz otomatik liste ve
otomatik yineleme değişkeni
ayrı şeylerin her biri üzerinden geçecek
ve takma ad, yapmak, vb,
bu doğruca models.py dosyasının dışında.
Her otomobilin sahip olduğu dört şey var
ve biz sadece bunları basıyoruz.
Ayrıca birincil anahtarı alırsınız
ve bu yüzden bir güncelleme URL'si oluşturacağız
ve bu URL autos için: auto_update.
Yani urls.py
dosyasına bakarsanız, bu otomatik güncellemenin yukarı baktığını görürüz, bu bize görünüme giden bir yol verir,
ancak bu özel yolun
birincil anahtar olan bir parametreye ihtiyacı
vardır ve bu da demektir ki bu URL şablonu etiketi, otomobillerin auto.id olması gerekir. Modeller aracılığıyla,
bir tane var, ve bir auto_create yapmak,
bu oldukça ileri.
Ama kurallardan biri,
oto yapmadan önce en az bir marka yapmalısınız,
çünkü hatırlarsanız,
bir otomatik eklemek için
bu açılır listeyi doldurulabilir ve bu da
marka tablosundan çekiliyor,
ve böylece temelde bunun yolu budur.
Ana manzara bu.
İşte başlıyoruz, güncelleyin.
Bu otomobil manzarası, ve eğer biz de “make view”
yaparsak, aynı şeyi yapacağız.
Eğer gidip yapım listesine
bakarsak, aynı temel şeyi yapıyoruz,
tüm markaları
görüntülüyoruz ve şimdi güncelleme ve silme var.
Bu şekilde saymana gerek yok.
Biz sadece tüm nesneleri
kapmak istiyoruz, bunu yapım listesi altında bir bağlamda koymak istiyoruz,
ve sonra HTML'de liste yapıyoruz,
ve bu daha da basit.
Sadece yapım listesinden geçiyor,
bu bağlamdan geliyor.
Hiçbiri yoksa, bunu yazdırmıyoruz
ve sonra adını çıkarıyoruz ve
sonra güncellemeye giden ve
silmeye giden bir güncelleme ve silme düğmemiz var
ve tabii ki, urls.py dosyasına bakarsanız,
bunlar da güncelleme ve silme
birincil anahtar gereksinimlerine sahiptir.
Eğer bu URL'yi
uygun URL yapmak için buraya geçmek zorunda bir birincil anahtar var,
ve sonra sadece bazı bağlantılar
geri çeşitli şeyler
geri dönmek, böylece
markaları görüntülemek, yeni bir marka eklemek.
Şimdi, tüm bunları iptal et.
Yani bu,
otomobilleri ve markaları listelemek için views.py.
Şimdi, biz yapmak yapmak istiyoruz görünümü oluşturmak.
Yani biz bir göz atın görünümü oluşturmak, Bu
bir marka eklemek olduğunu.
Bu, bu formu yaratacak.
Burayı daha da büyütebilirim.
Bu formu oluşturabilir,
içine Chevy denen bir şey koyacağız.
Bu formu oluşturmanın bir yolunu bulmalıyız.
Bunu bir giriş gerekli hale
getireceğiz, insanların bunu yapmasına izin vermeyeceğiz.
Biz sınıf geniş olan bazı değişkenler olacak,
hangi şablon kullanmak istediğimiz gibi,
ve success_url biz bu hakkı yaptıktan sonra.
Şimdi, sadece gönderirseniz
ve şikayet ederse, bunu yapmaz.
Ama doğru bir şekilde yaptıktan
sonra nereye gitmek istersin?
Chevy, sonrasında nereye gitmek istersin?
Bu kontrolör fonksiyonu.
Otomatik listeye geri dönmek istiyorum
ve bu yüzden success_url
otomatiklere gidiyor:hepsi urls.py dosyasında bu ana görünümdür.
Bu ana görünümün adı
ve eğer buraya gidersek,
hangi şablonu kullanacağız ve hangi success_url.
Eğer bir get isteği
yaparsak,
make formundan gelen marka için bir form oluşturacağız,
ama aslında
sadece bir dize alanı olan marka modelinden geliyor.
Bu kadar basit. Bunu tekrar kullanıyoruz.
Diyoruz ki,
buradan uzaklaşan bir form yapalım.
Bir form vermeliyiz,
çünkü modeller bu ekranı oluşturmak için kullanılamaz.
Bu ekran bir formdan geliyor.
Tamam. Biz şablona bir göz
atarsak, biz marka oluşturmak
şablon veya form yapmak bakarsak.
Yani form oluşturmak için kullanacağımız şablon bu.
Form_as_table'a ihtiyacımız olacak.
Formları bu şekilde yaptık.
CSRF belirteci koyun,
bir tablo yapın,
paragraf veya tablo olarak olabilir.
Ama her neyse, bu form nesnesine ihtiyacın var.
Yani form nesnesini içeri aktarmanız gerekiyor.
İşte buradayız, bir form yapacağız
ve sonra form nesnesine gidiyoruz,
ve sonra self.template
autos.makeform html yapmak için gidiyoruz.
O zaman bunu almak için geri vereceğiz.
Sonra düğmeye
gönder düğmesine bastığında, Bir marka ekle,
Biz Gönder düğmesine vurmak,
Biz bir form yazı yaptı çünkü o yazıya geliyor, geliyor.
Bunu yapma. Bu korkunç.
Vi'nin bunu yapmasından nefret ediyorum.
Ama işte başlıyoruz, geri döndük.
- Evet. Yani sonrası gelir,
request.POST
form tarafından tanımlanan bu anahtar-değer çiftleri olan tüm anahtar değer çiftleri vardır.
Bu yüzden,
istek sonrası gelen ilk verilerle bir marka formu yapalım diyoruz.
Formun oluşturduğu göz önüne alındığında,
bu alanların adlarının ne olduğunu bilir
ve bu formların nasıl çalıştığını arkasında gizleyen bir şeydir.
Ama aynı zamanda form verilerinin geçerli olup olmadığını kontrol eder ve
bu da takip edilen tüm bu doğrulayıcı kuralları olduğumuz anlamına gelir.
Doğrulayıcı kurallarına
uyulmazsa, form geçerli değilse,
sadece geri göndereceğiz.
Yani buradaki kod,
bu form geçerli bir kod değil.
Tek bir A harfi koyup “Gönder” tuşuna basarsam,
geri gelecek ve
formu yeniden oluşturacak ve tüm o hataları,
tüm bu şeyler bu form koduyla halledilecek,
bu Django form kodu neyin yanlış olduğunu anlayacaktır.
Birazcık şuraya, böylece
daha hızlı dönebilirim. İşte gidiyoruz.
Neyin yanlış olduğunu
anlıyor, bir hata mesajı yapıyor,
hata mesajı burada models.py adresinden geldi.
Hayır, tam burada.
Sonra forms.py geçti çünkü
sonuçta
model formundan miras aldığımız bir formdur. Anladın mı?
Yani bu harika. Yani bu hata koşuludur
ve aksi takdirde form.save yaparız.
Şimdi burada süper
havalı olan şey, bu formun
bir model formu olması ve
alan adları
modeldeki alan adlarıyla aynı
olması ve aslında modelin kendisinde bir tasarruf sağlaması.
Yani bir şekilde form,
gönderi isteğinden gelen model verilerini içerir ve sonra kaydeder.
Bu formu kaydeder.
Onu koyar ve sonra
tekrar istek URL'sine yönlendiririz.
Bu bana çok özlü davranıyor.
Eski gönderi verilerini
çekiyoruz, kötü olup olmadığını kontrol ediyoruz, eğer kötüyse,
formu yaptığımız
aynı şablona geri gönderiyoruz
ve daha sonra iyiyse kaydediyoruz
ve sonra başarı URL'sine giriyoruz.
Bu çok güzel bir şey.
Ama her zaman Django'da
olduğu gibi, bu
süper özlü olsa da yapılacak çok daha değerli bir şey.
Bunu neredeyse herhangi bir dilde
yapsaydınız, 75 satır kod gibi olurdunuz
ve burada 15 satır kodumuz var.
Ama Django'da bunu
yapmanın neredeyse her zaman daha özlü bir yolu olduğu ortaya çıktı.
Biz jenerik oluşturmak görünümü var.
Bu genel oluşturma görünümü için belgelere bir göz atabilirsiniz, django.views.generic.edit.
Hadi gidip şu şeyleri Google'a arayalım.
Her zaman buraya bir nokta koyarım ve bu genellikle
beni doğruya götürür çünkü
bu gerçek paket ve
paketin içindeki sınıf. Oh, hayır.
Özür dilerim. Bunun bir alan adı olduğunu düşündün,
bu yüzden arama işe yaramadı.
Ama şimdi Django diyeceğim,
en azından
benim için bir arama ile ilgili olacak bir şey,
genel düzenleme görünümleri CreateView'e atlamak.
Yani tüm bu şeyleri okuyabilirsiniz,
aslında genel CreateView.
Buna bir referansım var mı?
İşte sen gidiyorsun. Şuna bir bak.
Şimdi, bu da bizim
miras aldığımız diğer bazı görüşler gibi,
onlarda bir ton işlevsellik var.
Yani bir Otomatik Oluşturma yapmak istiyorsam,
tüm gereken bu.
Şimdi, AutoCreate ve MakeCreate
tüm amaç ve amaçlar için
tam olarak aynı şeyi yapın.
CreateView'i genişletiyoruz, çünkü AutoCreate uygulamasında ne olur,
üç bit meta
verimiz var, hangi modeli kullanmak istediğimizi,
bu modelden hangi alanları istediğimizi
ve nereye gidileceğini belirliyoruz.
Sonra bu tüm bu kodu üretir.
Bütün bu kod bize miras kaldı.
Burada MakeForm dışında şifreli bir şey olmadığını fark edeceksiniz.
Şimdi, Otomatik için form oluşturmamıza bile gerek yok
çünkü bu kod formu oluşturur.
Sadece bu değil, aynı zamanda
şablonu seçmek için bu adı Otomatik kullanır.
Yani auto_form
yaparsam, bunu kullanmak zorundayım.
Bunu kullanırsam, bu benim taban kayışımdır. Bu
konuda çok endişelenme.
Yani
kullanacağı şablonun adını biliyor.
Sadece burada hangi şablonu kullanacağımı söylemek zorundayım,
çünkü şablonu
türetir, auto_form.html şablondur.
Oldukça havalı. Oldukça harika ve havalı.
Böylece otomatik olarak bunu ve success_url'u bulur.
Yani tek gereken bu.
Aslında, bu MakeCreate içinde,
buradan buraya tüm bu kodu silmiş olabilir,
ancak bunun yerine CreateView genişleterek CreateView yapın.
Bunu sana gösteriyorum çünkü
gerçekte neler olduğunu görmeni istiyorum.
Ama kodunu böyle yazmıyorsun.
Kodunuzu böyle yazarsınız.
Şimdi, size
bir güncelleme yapmanın zor yolunu göstermek istiyorum.
Güncelleme nedir? Şifreye bir göz atalım.
Yani görünüm markalarına bir göz atalım.
Güncelleme,
buraya gittiğimizde gerçekleşen şey ve
bu MakeUpdate'e gidecek.
İşte MakeUpdate, işte urls.py. İşte bu.
Yani, birincil anahtar güncellemesine bakın,
ki o zaman burada altında bakarsanız,
bu arabalar bir Güncelleme araması olacak.
Bu yüzden Chevy olanı güncelleyeceğim.
Eski verileri okumalı
, size göstermeli
ve sonra güncellememize izin vermeli ve
doğrulama hataları olup olmadığını kontrol etmemize izin vermeli.
Sonra bizi bir success_url'a yönlendiriyor.
Eğer
görüşlere bakarsak, tekrar bakacağız
, bunu yapmanın çok daha kolay bir yolu var.
Bu yüzden bu değişkenleri veya success_url
, istediğimiz şablonu ve modeli ayarlıyoruz.
O zaman bir isteğimiz var.
Çünkü urls.py içinde bu int:pk var,
bu pk değerinde geçirildi.
Şimdi, bu get_object_or_404 gerçekten harika.
Bu get_object_or_404 (self.model pk=pk).
Bu,
pk eşittir geçirdiğimiz bu parametre ve aynı ad olması yaygındır,
ancak bu get_object_or_404 için bir parametredir.
Bu ikincisi,
almamıza çağrılan parametredir.
Kendiliğinden model, tabii ki, yapmaktır.
Get_object_or_404 temelde kontrol eder,
Bu güncellemeyi yapacağım,
markalara gidelim, bir güncelleme yapalım.
Yaptığı şey bu numarayı alıyor, bu üçünü otomatik/arama/3/güncelleme ve eski verileri alıyor.
Şimdi, eğer
yanlışlıkla
veritabanında olmayan bir numaram varsa,
9.999 gibi, ve buna bir istek yaparsam ne olur?
“ Sayfa bulunamadı 404.”
Burada olan şey şu: “Hey,
bu nesneyi yükle ve bana ve değişkene ver,
yap, ya da patlat ve 404 hatası gönder.”
Yani bu size neler olup bittiğini anlatıyor
, sadece “No Make verilen sorgu ile eşleşiyor.”
Genelde bunları elle yazmaman gerekiyor.
Üç işe yarıyor ve patlamıyor.
Yani get_object_or_404,
eski verileri yüklemenin ve daha sonra
bu verileri kullanarak korumanın veya sadece havaya uçurmanın bir yoludur.
O noktada daha fazla ileri gitme.
Şimdi,
bir form oluşturacağız ve eski verilerle dolduracağız.
Örneğin, örnek ne yapmak.
Demek nesne bu.
Bir MakeForm yap. İşte bir MakeForm.
Modeldeki tüm alanlar
Make modelinden miras alır.
Ardından,
az önce baktığımız make_form.html şablonuna geçirin.
Bu form geliyor, tek ihtiyacımız bu.
Bu çok genel bir görünüm.
Çok da umurunda değil.
Hepsi
modelden türetilmiş bu formda kodlanmış.
Sonra tabii ki, bir sürü şey
yazıp “Gönder” e basıyoruz.
Oluştur ile tam olarak aynı şeyi yapar,
ve iyi yapar.
İlk önce bir get yapmak zorunda veya 404
Biz birincil anahtar ile şey sonrası çünkü.
Güncellememiz gereken bir nesne olduğundan emin olmak için yüklüyoruz.
Sonra
bu veritabanından yeni bir marka formu oluşturup sonra değiştiririz.
Yani bu başlangıç verisi gibi,
ama sonra onu veriye dönüştürüyor.
Bu durumda,
Chevrolet veritabanındaki eski değerdir.
Eğer Bowtie dersem,
laboratuvar sonrası Bowtie istersem,
bu bir Chevrolet başlatır ama bu
formda bir objede Bowtie olur.
Elbette, geçerli değilse,
burada bir hata mesajı göndereceğiz.
Eğer geçerliyse,
onu kurtaracağız ve bu yüzden bu yeni Bowtie
orada kurtarılacak.
Yani eğer markalarımızı
görürsek, şimdi Bowtie olduğunu
görüyoruz ve başarı URL'sine yönlendireceğiz.
Şimdi, bu noktada,
umuyorum ki bundan sonra
ne olacağını tahmin edebilirsin.
Otomatik Güncelleştirme, güncelleştirme görünümünü
genişletir, genel düzenleme görünümü.
Hangi model olduğunu,
hangi alanları istediğinizi ve
başarılı olduğunda nereye gideceğinizi söylüyor.
O zaman burada olan her şeyi yapar.
Kelimenin tam anlamıyla, ben gidip silmek yapmak için aynı kelimeleri söyleyebiliriz,
Burada gidip
sildiğinizde ve sonra bir iptal var ne olur, Bir
onaylama silme var.
Bu şablonun adı rastgele seçilmemiştir,
confirm.delete,
model confirm.delete olarak adlandırılmalıdır.
İşte sen git. CSRF jetonunu kullanmalısın.
Bu konuda bir nesne olarak marka teslim edildi.
Böylece bu çıktıyı üretir.
Bunda form yok.
Sadece
nesne veya 404 tarafından yüklenen bir marka var ve sonra bunu yapmak geçer ve oluşturur.
Sonra yazı olduğunda, onu geri alır.
Varsa, bir 404 yine
hatalı verileri kontrol edip siler
ve başarı URL'sine atlanır.
Bundan sonra ne yapacağımı tahmin etmek çok fazla sürmez,
ve yani, silme görünümünü
genişletirseniz, tüm bu kodu ücretsiz alırsınız.
Sadece hangi model alanlarını
ve başarı için nereye gideceğinizi söyleyin.
Önemli olan şu ki,
ödevinizi yaparken,
eminim bazılarınız
bunları kopyalayıp yapıştıracaktır. Bu yanlış.
MakeCreate, MakeUpdate ve
MakeDelete,
AutoCreate, AutoUpdate ve AutoDelete kadar kısa olmalıdır.
Çünkü bu genel düzenleme
görüntülerini çok sık
yapacaksınız ve tekrar tekrar CRUD
yapacağız ve gerçekten 15 satır kod yazmak istemezsiniz.
Gereksiz tekrarlama, gereksiz kesme ve
yapıştırma ve
gerçekten basit tutabilirseniz kodu değiştirme.
Yani temelde
bu kod ile bir model için doğrulama ile CRUD formları ve CRUD işlevselliği tam bir set oluşturabilir ve sonra bir forms.py olması gerekmez,
sadece bir models.py var.
Araçlarınızı
yapıyorsanız, bir
forms.py yapıyorsam bir hata yaptığımı düşünürsünüz.
Çünkü eğer bu views.py dosyasını bu şekilde kullanırsam,
hepsini MakeUpdate gibi
görünmek yerine, kendinize çok fazla
zaman ve enerji kazandıracaksınız ve bunları değiştirmemiz gerekiyor.
Tüm değişiklikleri bulmak ve daha sonra değiştirmek çok daha kolay.
Yani bu, Arabalar için örnek kodun bir geçişidir.
Bu konuda bir görev yapacaksın,
ama her şeyi kopyalamayın.
Bunu,
özellikle de görüşlerde neler olup bittiğini anlamak için harcadığın zamanı ayarladım.
URL gururunuz sadece
kopyaladığınız modeller,
kopyaladığınız URL'ler,
ancak görünümler sadece kopyalamakla kalmaz,
gerçekten neler olup bittiğini anlamaz ve
tüm bu şeyleri yapmanın daha kolay ve özlü bir yolunu bulmaz.
Django
bu noktada gerçekten güzel görünmeye başladı.
Umarım bunu yararlı bulmuşsunuzdur. Şerefe.