Xin chào và chào mừng đến một Django khác
cho tất cả mọi người đi qua.
Vì vậy, có lẽ bạn đang ở thời điểm này
làm việc trên phân công ô tô của bạn.
Đây là lần đầu tiên tạo,
đọc, cập nhật và xóa nhiệm vụ thực sự của chúng tôi.
Rất nhiều những gì nhiệm vụ này là,
là nhìn vào mã
mà tôi đã cung cấp cho bạn trong DJ4E Samples và kéo nó vào.
Không sao chép kho lưu trữ cho nhiệm vụ này.
DJ4E Samples là một con quái vật.
Nó đã có tất cả các loại công cụ trong
đó, nó quá phức tạp và bạn không muốn.
Bạn muốn bắt đầu với một ứng dụng tốt đẹp, sạch sẽ.
Nhiệm vụ trước đây của bạn là tạo ra
một ứng dụng rất nhỏ,
chúng tôi sẽ mở rộng ứng dụng đó.
Đó là lý do tại sao bạn đã có
dự án DJ4E này ở bất cứ đâu.
Vì vậy, điều này
là, nhiệm vụ này là để phát triển
rằng bằng cách sử dụng mã mẫu.
Nhưng những gì tôi thực sự sẽ
làm là tôi sẽ đi qua
mã mẫu vì có những
khái niệm mới trong mã mẫu này.
Vì vậy, đây là một bài giảng về
mã mẫu hơn là chính xác làm thế nào để thực hiện các nhiệm vụ.
Nhưng quan trọng, bạn cần phải
hiểu từng dòng duy nhất bởi vì theo nghĩa đen,
mỗi chương trình mà chúng ta sẽ viết cho
n tuần tiếp theo là một biến thể trên CRUD này.
Vì vậy, những quan điểm mặc
định, nhận được 404,
tất cả những thứ đó là một nền tảng thực sự trong rất nhiều thứ.
Những gì chúng ta sẽ tìm thấy là
đúng cách để viết mã này,
giống như tất cả mọi thứ trong Django,
thực sự nhỏ và ngắn gọn.
Vì vậy, chúng ta hãy nhìn vào mã.
Vâng, chúng ta hãy đi trước và chạy mã.
Đi đến ô tô, và bạn phải đăng nhập.
Vì vậy, ý tưởng của điều này là có hai bảng.
Có một bảng làm cho.
Vì vậy, tôi sẽ thêm một make
và sau đó tôi sẽ thêm một auto,
và điều thú vị về điều này là đây là Neon
1, mileage 1,234, SakalCard.
Sau đó, tôi có trình đơn thả xuống mát mẻ này.
Vì vậy, có một loạt các hình thức đang diễn ra ở đây,
có sự thả xuống, có một
mối quan hệ nhiều đối một đang diễn ra.
Sau đó, tôi có danh sách này và tôi có thể cập nhật nó và xóa nó.
Vì vậy, đó là nơi đầy đủ CRUD của chúng tôi là.
Vì vậy, chúng tôi có thể thêm
làm cho, xem làm cho, thêm ô tô, vv
Vì vậy, đó là tất cả các mẫu.
Vì vậy, nó rất gần với những gì nó là bạn phải viết,
nó chỉ là không đi lấy và tất cả những thứ đó.
Vì vậy, chúng ta hãy bắt đầu bằng cách xem.
Vì vậy, tôi đang ngồi trong DJ4E Samples của tôi.
Nếu bạn nhìn, bạn thấy tất cả
các ứng dụng khác nhau của tôi trong một dự án.
Vì vậy, chúng tôi đã có ô tô,
nhưng tôi thực sự muốn bắt đầu với mã xác thực,
nếu tôi quay lại đây để mẫu,
hãy để tôi đăng xuất, mã cho phép tôi đăng nhập.
Vì vậy, nếu tôi đi thẳng đến ô tô để xem nếu tôi đã đăng xuất.
Bạn sẽ nhận thấy rằng những gì nó làm
khi tôi đi thẳng đến ô tô,
là nó định tuyến cho tôi để đăng nhập,
và sau đó với tiếp theo để quay trở lại tự động.
Vì vậy, quan điểm này trong autos,
/autos đã bảo vệ chính nó với sự trộn lẫn đăng nhập.
Sau đó chúng tôi sẽ đăng nhập,
đăng nhập của bạn sẽ không hoàn toàn giống như thế
này, nhưng đây là một trong những mà tôi có trên mẫu.
Bạn không cần phải làm cho nó đẹp,
một bài tập sắp tới sẽ làm cho mọi thứ trở nên đẹp đẽ.
Vì vậy, bây giờ chúng tôi đang ở ô tô và chúng tôi đã đăng nhập.
Ứng dụng của bạn phải có một số điều nữa ở đây,
nhưng tôi quan tâm hơn đến việc cho
bạn thấy thực sự bản chất
của quan điểm trong ô tô này.
Hãy xem xét ngắn gọn về cách đăng nhập tự động hoạt động.
Vì vậy, nếu tôi nhìn vào dj4e-samples/settings.py,
bạn cần phải có auth này cắm vào.
Vì vậy, về cơ bản là một loạt các mã, một số quan điểm
, vv, mà đến từ Django,
và đã có tất cả cùng
khi bạn đã bắt đầu dự án của bạn.
Tất nhiên, ở đâu đó trong này,
chúng ta phải có xe ô tô, dù ô tô ở đâu.
Vâng, cấu hình ứng dụng ô tô,
bạn phải kéo ứng dụng ô tô vào.
Nếu tôi nhìn vào dj4e-samples/urls.py,
sau đó tôi có thể tìm thấy ô tô ở đây,
và cần phải có một số dòng mà về cơ bản nói,
“Ở cấp độ cao nhất,
tất cả mọi thứ bên dưới ô tô được giao cho
các tập tin url trong autos.py.
Nhưng sau đó cũng có những tài khoản.”
Vì vậy, nếu bạn nhớ lại,
đây là một loạt các quan điểm đến từ Django cho chúng tôi,
nó được cài đặt sẵn cho chúng tôi.
Điều mà chúng ta phải làm là chúng ta
phải cung cấp mẫu này
với tên registration.html.
Vì vậy, tôi nghĩ rằng tôi đã có điều này trong nhà/mẫu/đăng ký/.
Vâng, tôi biết. Vì vậy, tôi đã thực sự có hai đăng nhập.
Tôi có một cái thực sự đơn giản như login.html.
Đây là một trong những tôi khuyên bạn nên bắt đầu với.
Sau đó chúng tôi sẽ sử dụng đăng nhập xã hội. Điều này rất đơn giản.
Đó là một trang đăng nhập sử dụng khả năng biểu mẫu Django.
Nếu hình thành ra lỗi,
điều đó có nghĩa là có một lỗi xác thực.
Nó trở lại và hiển thị lại
trang này và cho bạn thấy một lỗi.
Sau đó, chúng tôi thực hiện một biểu mẫu bài đơn giản với một URL
đó là một tra cứu đảo ngược đến một cái nhìn với một tên đăng nhập.
Sau đó, chúng tôi đặt mã thông báo CSRF vào và sau đó chúng tôi lấy mẫu,
và tôi chỉ làm điều này với thẻ đoạn.
Vì vậy, đó là một đăng nhập đơn giản,
đó không phải là một trong thực tế mà chúng tôi đang hiển thị.
Sau đó, tiếp theo là một giá trị ẩn mà bạn phải vượt qua để
khi bạn thực sự đăng nhập thành công,
nó biết quay trở lại ô tô.
Khi tất cả xong, nó trở lại
đây sau khi đăng nhập đã được thực hiện.
Vì vậy, đăng ký/đăng nhập,
bạn có thể đặt điều này trong bất kỳ ứng dụng của bạn,
nhưng bạn muốn đặt tên nó là registration/login.html.
Vì vậy, nếu tôi có một cái nhìn thực sự nhanh chóng
và tôi đi vào nhà/mẫu,
đây là tất cả các mẫu.
Khi tôi làm một ls, bạn sẽ thấy rằng tôi có
một nhà/mẫu/nhà và một nhà/mẫu/đăng ký.
Bạn có thể có nhiều hơn một thư mục ở đây.
Nếu tôi nhìn vào những gì đang đăng ký,
bạn thấy rằng tôi đã có đăng nhập đơn giản này và sau đó đăng nhập
phức tạp hơn sẽ cung cấp cho chúng ta
khả năng đăng nhập GitHub.
Vì vậy, điều đó có nghĩa là đăng nhập sử dụng xã hội.
Vấn đề là bên dưới các mẫu này,
bạn không cần phải chỉ có một thư mục con,
bạn có thể có nhiều hơn một thư mục con.
Vì vậy, đó là cấu hình cần thiết để làm cho nó để
khi chúng tôi nói với quan điểm của chúng tôi để thêm mixin đăng nhập,
mà chúng tôi sẽ thấy chỉ trong một giây.
Chúng tôi nói với quan điểm của chúng tôi trong đăng nhập để sử dụng mixin đăng nhập,
sau đó nó biết nơi để lấy mẫu từ.
Vì vậy, đó chỉ là một phần của nó và
hướng dẫn của bạn cho bạn biết làm thế nào để làm điều đó.
Vì vậy, bất kỳ ứng dụng mà bạn sẽ
xây dựng hoặc bất kỳ dự án bạn sẽ xây dựng,
bạn phải đặt những trong các thiết lập py,
urls.py, và sau đó làm cho các mẫu.
Sau đó, bạn phải bắt đầu sử dụng
mixin đăng nhập và sau đó tất cả mọi thứ chỉ
kỳ diệu bắt đầu đến với nhau.
Vì vậy, chúng ta hãy nhìn vào ứng dụng ô tô thực tế.
Chúng ta sẽ xem xét một vài điều khác nhau
ở đây, autos/url.
Tôi sẽ làm một tab đa thiết bị đầu cuối,
vì vậy tôi có thể chuyển trở lại giữa các tập tin thực sự nhanh chóng.
Bạn có thể có một trình soạn thảo văn bản tốt hơn tôi.
Vì vậy, tôi đã có url,
tôi sẽ có một cái nhìn vào autos/views.py.
Sau đó, tôi sẽ xem xét autos/model.py.
Sau đó, tôi sẽ xem xét autos/forms.py.
Vì vậy, chúng ta hãy làm việc thông qua bốn tập tin,
url, lượt xem, mô hình, hình thức.
Có lẽ chúng ta hãy làm mô hình trước.
Vì vậy, điều này khá đơn giản.
Chúng ta sẽ làm cho một lớp Make object.
Nó sẽ có một trường ký tự
với một số validators trong đó.
Chúng tôi chơi với nó với các hình thức.
Bạn có thể đặt validators trong các mô hình.
Trước đây chúng ta đã nhìn thấy validators trong hình thức,
nhưng có một validator mà về cơ bản nói,
chúng ta sẽ không chấp nhận dữ liệu đi vào
bảng cơ sở dữ liệu này trừ khi
có ít nhất hai ký tự.
_str_ này, bạn đã làm điều này một thời gian.
Điều đó về cơ bản là nếu bạn lấy
một đối tượng mô hình một make thực tế và bạn in
nó, nó nói rằng trường nào,
trong trường hợp này, chỉ có một trường.
Vì vậy, mà chỉ nói khi chúng ta đang chuyển đổi
một đối tượng mô hình để một chuỗi,
chúng ta có thể quyết định như thế nào mà trông.
Sau đó, chúng tôi có một ô tô và nó có
một biệt danh với một MinLengthValidator, max_length của 200,
và mileage, trong đó có một trường số nguyên, một ý kiến,
đó là một trường 300 ký tự,
và sau đó là một khóa ngoại trong quá.
Đây là một mối quan hệ một-nhiều hoặc nhiều đối một,
không phải là một một-nhiều, chỉ là một chìa khóa nước ngoài vào Make.
Sau đó, chúng tôi sẽ on_delete
CASCADE mà thực sự có nghĩa là nếu bạn xóa một Make,
sau đó các mục tự động tương ứng
sẽ tự động bị xóa.
Đây là một mô hình khá đơn giản,
thực sự rất, rất đơn giản.
Một lần nữa, chúng tôi luôn định nghĩa
_str_ này (self) để chúng tôi biết rằng nếu bạn
chỉ hiển thị nó giống như trong
giao diện quản trị hoặc nếu bạn chỉ cần
in nó hoặc chỉ
chuyển đổi mô hình chính nó
thành một chuỗi, trường trong số các lĩnh vực này
được cho là ,
chỉ để hiển thị cho người dùng cuối.
Vì vậy, đó là tập tin mô hình.
Hãy nhìn vào các hình thức tập tin tiếp theo.
Vì vậy, tập tin hình thức rất thú vị,
bởi vì chúng ta đã thấy các hình thức
chỉ là các hình thức
của bản thân, nhưng đây là một
hình thức đặc biệt và sau đó nó là một hình thức ModelForm.
Trong đó, chúng tôi thường trong các mô hình khác,
chúng tôi có tất cả các lĩnh vực này,
và chúng tôi đặt chúng vào và nó trông
giống như một tập tin mô hình nơi chúng tôi
có một lĩnh vực ký tự, PositiveIntegerField.
Nhưng những gì chúng ta đang nói là, bạn biết không?
Chúng ta sẽ làm một hình thức ở đây.
Thực sự, tất cả những gì chúng tôi muốn làm là lấy
tất cả các trường từ
Make model và làm cho chúng các trường biểu mẫu.
Vì vậy, một hình thức và một mô hình là hai điều khác nhau.
Một biểu mẫu là một cái gì đó đi
giữa chế độ xem và mẫu,
và như bạn sẽ thấy,
nó cũng đi xuống vào các mô hình tự động,
vì vậy điều này giống như tạo tất cả các trường.
Hãy tạo một biểu mẫu vì
đối tượng biểu mẫu không cần phải được liên kết với mô hình.
Nhưng trong trường hợp này, chúng ta sẽ
lấy được một đối tượng hình thức từ một mô hình.
Vì vậy, thay vì mở rộng hình thức, chúng tôi đang mở rộng ModelForm.
Vì vậy, đó là một ModelForm phải có,
và đây chỉ là một số dữ liệu cho biết mô hình mà chúng tôi
sẽ kéo tất cả các lĩnh vực của chúng tôi từ là mô hình Make,
và nó chỉ có một điều mà là một tên.
Đó là nó. Vì vậy, đây là tự động tạo ra
một hình thức mà nếu
chúng ta thay đổi nó và thêm một lĩnh vực ở đây,
sau đó biểu mẫu này sẽ tự động có một lĩnh vực.
Bạn có thể cung cấp cho nó một danh sách các trường,
_ _ tất cả _
giống như một tín hiệu để nói,” Chỉ cần cho tôi tất cả chúng.”
Bây giờ có thể có một số nội bộ
như được tạo ra và
cập nhật tại hoặc một cái gì đó mà bạn không muốn sử dụng.
Vì vậy, đó là một hình thức, hãy nhớ cách thức hoạt động.
Chúng tôi đã bao gồm điều đó trước đây. Chúng ta hãy xem URL của chúng tôi.
Rất nhiều thứ này trông
khá giống với những thứ mà chúng tôi đã làm.
Về cơ bản chúng tôi có một bảng chính,
đó là bảng ô tô của chúng tôi,
và bảng tra cứu của chúng tôi, đó là bảng làm cho chúng tôi.
Sau đó, chúng tôi có ba điều,
có xem danh sách chính,
đó là danh sách tất cả các ô tô.
Có chế độ xem danh sách chính,
đó là danh sách tất cả các make.
Sau đó, chúng ta có thể tạo ra
một cái mới mà không có chìa khóa chính,
bởi vì một phần của ý tưởng
tạo ra là tạo ra một điều mới,
nó sẽ tạo ra một khóa chính.
Sau đó, chúng tôi sẽ có cập nhật và xóa.
Vì vậy, chúng tôi có một đọc, tạo, cập nhật, xóa.
Vì vậy, nó không chính xác,
nhưng bạn thấy tất cả bốn điều này.
Vì vậy, chúng tôi đã có quan điểm,
và chúng tôi đặt tên cho các quan điểm này để chúng tôi có thể
tham khảo chúng trong quan điểm của chúng tôi
bản thân và trong mẫu của chúng
tôi để chúng tôi có thể tạo liên kết ở giữa chúng.
Vì vậy, chúng khá
đơn giản và không phải tất cả khác nhau.
Vì vậy, niềm vui bắt đầu xảy ra khi chúng tôi đang ở trong views.py.
Vì vậy, đăng nhập mixin,
nếu bạn nhớ từ tác giả của z walk-through,
bạn chỉ cần thêm điều này vào một cái nhìn và nó chỉ
về cơ bản nói rằng bạn không thể nhận được
để xem này trừ khi
bạn đang đăng nhập và nếu bạn không đăng nhập,
nó sẽ va vào các
tập tin login.html và sau đó trả lại sau khi bạn thực hiện.
Vì vậy, LoginRequiredmixin là tất cả những gì chúng ta cần làm.
Nếu bạn đi đến mẫu z tác giả,
bạn sẽ thấy như tôi đã làm điều đó bằng tay.
Bạn không muốn làm điều đó bằng tay,
bạn chỉ cần gọi mixin đăng nhập.
Bây giờ, vì vậy chế độ xem chính này là một chế độ xem danh sách,
và vì vậy chúng ta hãy đi
xem những gì điều này sẽ trông như thế nào.
Đây là dạng xem Danh sách.
Vì vậy, chúng tôi sẽ mất tuy nhiên nhiều kiểm toán chúng tôi có,
chúng tôi sẽ đi vòng qua danh sách đó,
chúng tôi sẽ truy xuất tất cả các kiểm toán từ cơ sở dữ liệu.
Sau đó, chúng tôi sẽ có một thêm các liên kết tự động,
sau đó một cái nhìn mà làm cho liên kết với
một đếm bao nhiêu làm cho có và thêm một make.
Vì vậy, hãy để tôi cũng sau đó đi vào ô tô mẫu,
ô tô một lần nữa, và danh sách tự động.
Vì vậy, đây là mẫu mà làm cho nó.
Vì vậy, có một vài thứ mà chúng tôi nhận được,
chúng tôi có một danh sách tự động.
Bây giờ tên của những thứ này không bắt buộc bạn,
nhưng có những quy ước xuất hiện trong giây lát,
chúng ta sẽ trông rất hữu ích.
Vì vậy, chúng ta sẽ có một danh sách tự động.
Nếu chúng ta quay trở lại quan điểm của
chúng tôi, chúng ta thấy rằng chúng ta nói,
nhận được tất cả các đối tượng từ bảng tự động,
tất cả các đối tượng lớp tự động lấy tất cả
chúng, qua chúng vào ngữ cảnh như auto_list.
Bây giờ chúng tôi cũng muốn có thể
cho thấy số đếm nhỏ đó, đây là số hai,
vì vậy chúng tôi sẽ hỏi,
đi trước để làm cho các đối tượng
tất cả nhưng đừng cho tôi một danh sách của chúng,
đếm chúng và cho tôi một con số.
Vì vậy, làm cho đếm bị mắc kẹt trong đó và bạn sẽ
thấy nếu có thể đếm là lớn hơn không.
Chúng tôi có thể hiển thị quảng cáo và nút tự động,
và nó cũng ở đâu đó hiển thị số
làm, xem tất cả các make, thêm một make,
và make count đi ra ở đây.
Và đó là một thứ khác mà chúng tôi đưa vào.
Danh sách tự động chúng ta sẽ đi qua và
biến lặp của auto sẽ
đi qua từng điều riêng biệt,
và biệt danh, thực hiện, vv,
đó là ngay ra khỏi tập tin models.py.
Có bốn thứ mà mỗi chiếc ô tô đều có,
và chúng tôi đang in tất cả những thứ này ra.
Bạn cũng nhận được khóa chính,
và vì vậy chúng tôi sẽ thực hiện một URL cập nhật,
và URL đó là để autos: auto_update.
Vì vậy, nếu bạn nhìn vào urls.py,
chúng ta thấy cập nhật tự động
này tra cứu, điều này cho chúng ta một đường dẫn đến quan điểm,
nhưng đường dẫn cụ thể cần
một tham số đó là một khóa chính,
và do đó có nghĩa là thẻ URL mẫu,
autos phải có auto.id
Nhưng bởi vì chúng ta đang looping thông qua các mô hình,
bạn có một, và bạn làm một auto_create,
đó là khá thẳng về phía trước.
Nhưng một trong những quy tắc là, bạn phải có
ít nhất một thực hiện trước khi bạn có thể làm một tự động,
bởi vì nếu bạn nhớ lại,
thêm một tự động phải có
danh sách thả xuống này được phổ biến và
đó là được kéo từ make table,
và đó là cơ bản cách xung quanh điều này.
Đó là quan điểm chính.
Đây rồi, cập nhật.
Đó là chế độ xem ô tô, và sau đó nếu chúng ta thực hiện chế độ xem,
chúng ta đang làm điều tương tự.
Nếu chúng ta đi và nhìn vào danh sách thực hiện,
chúng tôi đang làm điều cơ bản tương tự,
xem tất cả các thực hiện,
và bây giờ chúng tôi đã cập nhật và xóa.
Bằng cách này bạn không cần phải đếm.
Chúng tôi chỉ muốn lấy tất cả các đối tượng,
chúng tôi muốn đặt nó trong một ngữ cảnh dưới make list,
và sau đó chúng tôi làm cho danh sách trên HTML,
và điều này thậm chí còn đơn giản hơn.
Nó chỉ đi qua danh sách thực hiện,
nó đi vào thông qua bối cảnh.
Nếu không có, chúng tôi không in này ra,
và sau đó chúng tôi đưa ra tên của nó,
và sau đó chúng tôi có một bản cập nhật và một nút xóa
đi để cập nhật và xóa,
và tất nhiên, nếu bạn nhìn vào urls.py,
những người cũng cập nhật và xóa
có yêu cầu khóa chính,
và như vậy bạn có một khóa chính
mà bạn đã phải vượt qua ở đây
để làm cho URL đó URL thích hợp,
và sau đó chỉ cần một số liên kết
để quay trở lại những thứ khác nhau
để chúng tôi có thể lấy lại ô tô,
xem làm cho, thêm một make mới.
Bây giờ, hủy bỏ tất cả những thứ đó đi.
Vì vậy, đó là views.py
để liệt kê các ô tô và làm cho.
Bây giờ, chúng tôi muốn làm cho make create view.
Vì vậy, nếu chúng ta có một cái nhìn tại make create view,
đó là thêm một make.
Điều đó sẽ tạo ra hình thức này.
Tôi có thể làm cái này to hơn ở đây.
Nó có thể tạo ra hình thức này,
nơi chúng ta sẽ đưa vào một thứ gọi là Chevy.
Vì vậy, chúng ta cần một cách để tạo ra hình thức này.
Chúng tôi sẽ làm cho nó một đăng nhập bắt buộc,
chúng tôi sẽ không để mọi người làm điều này.
Chúng tôi sẽ có một số biến đó là lớp rộng,
giống như những gì mẫu chúng tôi muốn sử dụng,
và success_url là sau khi chúng tôi đã làm điều này đúng.
Bây giờ, nếu bạn chỉ gửi
nó và nó than phiền, nó không làm điều đó.
Nhưng một khi bạn đã
làm đúng, bạn muốn đi đâu sau đó?
Vậy Chevy, sau đó anh muốn đi đâu?
Đây là chức năng điều khiển.
Tôi muốn quay trở lại danh sách tự động,
và vì vậy success_url là đi
đến autos:tất cả những gì trong urls.py là quan điểm chính này.
Đó là tên của chế độ xem chính,
và vì vậy nếu chúng ta đi đây,
mẫu nào để sử dụng và success_url nào.
Nếu chúng ta làm một yêu cầu get,
chúng ta sẽ xây dựng một hình thức cho
làm mà xuất phát từ make form,
nhưng thực sự nó đến từ các make model,
mà chỉ là một chuỗi lĩnh vực.
Đơn giản như vậy. Chúng ta đang sử dụng lại cái này.
Chúng ta chỉ nói, chúng ta hãy tạo ra một hình thức
kéo từ đây.
Chúng ta phải vượt qua một hình thức,
bởi vì các mô hình không thể được sử dụng để tạo ra màn hình này.
Màn hình đó xuất phát từ một hình thức.
Được rồi. Nếu chúng ta nhìn vào mẫu,
nếu chúng ta nhìn vào tạo
mẫu hoặc tạo mẫu.
Vì vậy, đó là mẫu chúng tôi sẽ sử dụng để tạo hình thức.
Chúng ta sẽ cần form_as_table.
Đó là từ cách chúng tôi thực hiện các hình thức.
Đặt mã thông báo CSRF,
bạn tạo một bảng,
có thể là đoạn văn hoặc bảng.
Nhưng bất cứ điều gì, bạn cần đối tượng hình thức này.
Vì vậy, bạn cần phải vượt qua các đối tượng hình thức trong.
Vì vậy, ở đây chúng tôi đang, chúng tôi sẽ làm cho một hình thức
và sau đó chúng tôi sẽ đối tượng hình thức trong,
và sau đó chúng tôi sẽ hiển thị để self.template
autos.makeform html.
Sau đó, chúng ta sẽ trả lại nó cho nhận được.
Sau đó, khi chúng tôi nhấn
nút nút gửi, Thêm một make,
chúng tôi nhấn nút gửi,
nó đi vào bài
vì chúng tôi đã thực hiện một bài đăng hình thức, đi vào.
Đừng làm thế. Thật khủng khiếp.
Tôi ghét nó khi vi làm điều đó.
Nhưng đây rồi, chúng ta đã trở lại.
Yeah. Vì vậy, bài đi vào,
request.post có tất cả các cặp giá trị quan trọng
đó là những cặp giá trị khóa-giá trị như được định nghĩa bởi các hình thức.
Vì vậy, chúng ta nói chúng ta hãy làm cho một biểu mẫu với
dữ liệu ban đầu đến từ bài yêu cầu.
Cho rằng biểu mẫu tạo ra nó,
nó biết tên của các trường này là gì,
và đây là một cái gì đó ẩn đằng sau cách biểu mẫu hoạt động.
Nhưng nó cũng kiểm tra xem nếu dữ liệu biểu mẫu là hợp lệ và
điều đó có nghĩa là chúng tôi tất cả các quy tắc validator theo sau.
Nếu các quy tắc validator không được tuân theo,
nếu không phải là hình thức hợp lệ,
chúng tôi sẽ chỉ gửi nó trở lại.
Vì vậy, mã này ở đây,
hình thức này không phải là mã hợp lệ.
Nếu tôi đặt trong một chữ cái duy nhất A và nhấn “Submit”,
nó sẽ trở lại và tái render
các hình thức và tất cả những thứ lỗi,
tất cả những thứ đó được xử lý bởi mã hình thức
này, mã hình thức Django này tìm ra những gì là sai.
Ngay lập tức chỉ một chút để tôi có thể
quay lại nhanh hơn. Chúng ta đi đây.
Nó tìm ra những gì sai với nó,
làm cho một thông báo lỗi,
thông báo lỗi đến từ models.py ngay tại đây.
Không, ngay đây.
Sau đó đi qua forms.py bởi vì nó là
một hình thức cuối cùng mà chúng tôi thừa hưởng từ
hình thức mô hình. Nhận được nó?
Thật tuyệt. Vì vậy, đó là điều kiện lỗi,
và nếu không chúng tôi làm form.save.
Bây giờ điều ở đây thực sự là siêu
mát mẻ là bởi vì hình thức này là
một hình thức mô
hình và tên trường giống như
các tên trường trong mô hình,
và vì vậy nó thực sự thực hiện một lưu trên mô hình chính nó.
Vì vậy, trong một cách biểu mẫu
chứa dữ liệu mô hình đến từ yêu cầu bài đăng và sau đó nó lưu nó.
Điều đó lưu biểu mẫu.
Nó đặt nó trong, và sau đó chúng tôi chỉ cần
chuyển hướng trở lại URL yêu cầu.
Điều này khá ngắn gọn tôi.
Chúng tôi kéo dữ liệu bài đăng cũ,
chúng tôi kiểm tra xem nếu nó là xấu, nếu nó là xấu,
chúng tôi gửi biểu mẫu trở lại
chính xác cùng một mẫu chúng tôi
đã làm và sau đó chúng tôi lưu nó nếu nó là tốt,
và sau đó chúng tôi bật đến URL thành công.
Đó là một điều tuyệt vời.
Nhưng cũng giống như ở Django tất cả các thời gian,
đây là một điều quan trọng hơn để
làm mặc dù điều này là siêu ngắn gọn.
Nếu bạn đã làm điều này trong hầu hết các ngôn ngữ khác,
bạn sẽ giống như 75 dòng mã,
và ở đây chúng tôi có 15 dòng mã.
Nhưng hóa ra ở Django
hầu như luôn luôn có một cách ngắn gọn hơn để làm điều đó.
Chúng tôi có một cái nhìn tạo chung.
Bạn có thể xem tài liệu cho
dạng xem tạo chung này, django.views.generic.edit.
Chúng ta hãy đi và Google những thứ này.
Tôi luôn luôn chỉ cần đặt một dấu chấm ở đây và điều này thường
khiến tôi phải vì
đó là gói thực tế và lớp học bên
trong gói. Ồ, không.
Xin lỗi. Bạn nghĩ rằng đó là một tên miền,
vì vậy việc tìm kiếm không hoạt động.
Nhưng bây giờ tôi sẽ chỉ nói Django, một
cái gì đó vì vậy ít nhất
nó sẽ làm với một tìm kiếm cho tôi, các chế độ
xem chỉnh sửa chung nhảy vào CreateView.
Vì vậy, bạn có thể đọc qua tất cả các công cụ này,
chung CreateView thực sự.
Tôi có tham chiếu đến điều này không?
Vậy đây rồi. Hãy nhìn vào cái đó.
Bây giờ, điều này giống như
một số quan điểm khác mà chúng tôi đã thừa hưởng,
có rất nhiều chức năng trong đó.
Vì vậy, nếu tôi muốn làm một AutoCreate,
đây là tất cả những gì nó cần.
Bây giờ, AutoCreate và MakeCreate
cho tất cả các mục đích và mục đích,
làm điều chính xác.
Vì vậy, những gì xảy ra trong AutoCreate
bởi vì chúng tôi đang mở rộng CreateView,
chúng tôi có ba bit của siêu dữ liệu,
chúng tôi cho nó biết mô hình mà chúng tôi muốn sử dụng,
mà
các lĩnh vực từ mô hình đó chúng tôi muốn, và nơi URL thành công để đi là.
Sau đó, điều này tạo ra tất cả các mã này.
Chúng tôi thừa hưởng tất cả mã số đó.
Bạn sẽ nhận thấy rằng không có gì hardcoded
trong đây ngoại trừ MakeForm.
Bây giờ, chúng tôi thậm chí không cần phải làm cho một hình thức cho Tự động
bởi vì mã này ngay tại đây xây dựng các hình thức.
Không chỉ thế, nhưng nó sử dụng tên này
Tự động để chọn mẫu.
Vì vậy, nếu tôi làm auto_form,
tôi phải sử dụng này.
Tôi sử dụng điều này, đó là bootstrap cơ sở của tôi.
Đừng lo lắng quá nhiều về chuyện đó.
Vì vậy, nó biết tên
của mẫu mà nó sẽ sử dụng.
Tôi chỉ phải nói với nó mẫu nào để sử dụng ở đây,
bởi vì nó có nguồn gốc mẫu,
auto_form.html là mẫu.
Khá tuyệt. Khá tuyệt vời và tuyệt vời.
Vì vậy, nó tự động tìm thấy điều đó và success_url.
Vì vậy, đây là tất cả những gì cần thiết.
Như một vấn đề của thực tế, trong MakeCreate này,
tôi có thể đã xóa tất cả các mã này từ đây đến đây,
nhưng thay vào đó chỉ cần làm một CreateView bằng cách mở rộng CreateView.
Vì vậy, tôi chỉ cho các bạn thấy điều này bởi vì tôi muốn các bạn
thấy những gì đang thực sự diễn ra.
Nhưng đây không phải là cách bạn viết mã của bạn.
Đây là cách bạn viết mã của bạn.
Vì vậy, bây giờ, tôi muốn cho bạn thấy
cách làm một bản cập nhật khó khăn.
Vậy bản cập nhật là gì? Chúng ta hãy nhìn vào mã.
Vì vậy, chúng ta hãy nhìn vào xem làm.
Cập nhật là điều
xảy ra khi chúng tôi đi đây và
đó là đi đến MakeUpdate.
Vì vậy, đây là MakeUpdate, đây là urls.py. Đây là cái này.
Ý tôi là, tra cứu cập nhật khóa chính,
mà sau đó nếu bạn nhìn dưới đây,
nó sẽ được autos tra cứu một Cập nhật.
Vì vậy, tôi sẽ cập nhật Chevy một.
Nó phải đọc các dữ liệu cũ,
phải hiển thị nó cho bạn,
và sau đó cho phép chúng tôi cập nhật nó và sau đó gửi nó kiểm tra,
tất nhiên, cho bất kỳ lỗi xác nhận.
Sau đó chuyển hướng chúng tôi trở lại một success_url.
Vì vậy, nếu chúng ta nhìn vào các quan điểm,
chúng ta sẽ một lần nữa,
báo trước, có một cách dễ dàng hơn để làm điều này.
Vì vậy, chúng tôi thiết lập các biến này hoặc success_url,
mẫu mà chúng tôi muốn, và mô hình.
Sau đó, chúng tôi có một yêu cầu get.
Bởi vì trong urls.py có int:pk này,
đã được thông qua trong giá trị pk này.
Bây giờ, get_object_or_404 này thực sự là mát mẻ.
Điều này get_object_or_404 (self.model pk=pk).
Đó là tham số này mà chúng tôi đang đi qua
pk bằng và nó là phổ biến rằng họ có cùng tên,
nhưng đây là một tham số để get_object_or_404.
Thứ hai này là tham số
đã được gọi để nhận được của chúng tôi.
Self.Model, tất nhiên, là thực hiện.
Get_object_OR_404 về cơ bản kiểm tra để xem nếu,
Tôi sẽ làm cập nhật này,
chúng ta hãy đi làm cho, chúng ta hãy làm một cập nhật.
Những gì nó đang làm là nó lấy con số
này, ba ở đây, autos/lookup/3/update,
và nó lấy dữ liệu cũ.
Bây giờ, điều gì sẽ xảy ra nếu tôi
vô tình có một số
mà không tồn tại trong cơ sở dữ liệu,
như 9,999, và tôi thực hiện một yêu cầu get để một trong đó?
Tôi nhận được “Không tìm thấy trang 404.”
Vì vậy, những gì đang xảy ra ở đây là bằng cách nào đó bạn nói, “Này,
tải đối tượng này và đưa nó cho tôi và biến
, thực hiện, hoặc chỉ thổi lên và gửi ra một lỗi 404.”
Vì vậy, điều này cho bạn biết những gì đang xảy ra
, xem bạn chỉ, “Không thực hiện phù hợp với truy vấn đã cho.”
Bây giờ, nói chung bạn không được phép gõ những thứ này.
Ba nó hoạt động, và vì vậy nó không nổ tung.
Vì vậy get_object_or_404 là một cách để tải
dữ liệu cũ và sau đó
bảo vệ bằng cách sử dụng dữ liệu đó, hoặc chỉ thổi lên.
Vì vậy, đừng đi xa hơn nữa vào thời điểm đó.
Bây giờ, sau đó chúng tôi sẽ làm
một biểu mẫu và chúng tôi sẽ điền vào nó với các dữ liệu cũ.
Ví dụ, ví dụ, những gì các ví dụ được thực hiện.
Đó là đối tượng.
Thực hiện một MakeForm. Đây là một MakeForm.
Tất cả các trường từ mô hình
kế thừa từ mô hình Make.
Sau đó chuyển nó vào mẫu make_form.html,
mà chúng tôi chỉ xem xét.
Mẫu đơn này xuất hiện, đó là tất cả những gì chúng ta cần.
Đây là cái nhìn rất chung chung.
Nó thực sự không quan tâm nhiều lắm.
Nó được mã hóa khá nhiều trong hình thức này,
được bắt nguồn từ mô hình.
Sau đó, tất nhiên, chúng tôi gõ một loạt các nội dung
vào và chúng tôi nhấn “Submit”.
Nó làm chính xác điều tương tự như Tạo,
và nó làm tốt.
Đầu tiên nó phải làm một get hoặc 404 bởi vì
chúng tôi gửi đến điều với khóa chính.
Chúng tôi tải nó lên để đảm bảo rằng chúng tôi có một đối tượng để cập nhật.
Sau đó, chúng tôi tạo ra một biểu mẫu tạo mới
từ cơ sở dữ liệu đó và sau đó thay đổi nó.
Vì vậy, điều này giống như dữ liệu bắt đầu,
nhưng sau đó nó thay đổi nó thành dữ liệu.
Vì vậy, trong trường hợp cụ thể này,
Chevrolet là giá trị cũ trong cơ sở dữ liệu.
Nếu tôi nói Bowtie,
yêu cầu bài phòng thí nghiệm Bowtie,
điều này sẽ bắt đầu một Chevrolet nhưng trong hình thức này
đối tượng sau đó nó sẽ được Bowtie.
Tất nhiên, nếu nó không hợp lệ,
chúng tôi sẽ trả lại một thông báo lỗi ngay tại đây.
Nếu nó hợp lệ, chúng ta sẽ cứu
nó và thế là Bowtie mới này
sẽ được cứu trong đó.
Vì vậy, nếu chúng ta xem làm cho của
chúng tôi, chúng ta thấy rằng nó bây giờ là Bowtie,
và chúng tôi sẽ chuyển hướng đến URL thành công.
Bây giờ, tại thời điểm này,
tôi hy vọng các bạn có thể dự đoán được điều
gì sẽ xảy ra tiếp theo.
AutoUpdate, mở rộng chế độ xem cập nhật, chế
độ xem chỉnh sửa chung.
Nó cho biết nó là mô hình
nào, những lĩnh vực bạn muốn, và
nơi để đi khi nó thành công.
Sau đó nó làm mọi thứ ở đây.
Theo nghĩa đen, tôi có thể đi và nói
chính xác cùng một từ cho make delete,
đó là những gì xảy ra khi bạn đi vào đây
và bạn xóa và sau đó bạn có một hủy bỏ,
có một xác nhận xóa.
Tên của mẫu này không được chọn ngẫu nhiên,
nó phải được gọi là confirm.delete,
mô hình confirm.delete.
Đây rồi. Bạn phải có mã thông báo CSRF.
Bạn được giao cho make như một đối tượng trong này.
Vì vậy, nó tạo ra đầu ra này.
Không có hình thức nào trong cái này.
Có chỉ là làm cho được nạp bởi
đối tượng hoặc 404 và sau đó nó đi làm trong và render nó.
Sau đó, khi bài đăng xảy ra, nó lấy nó.
Nếu nó ở đó, một 404 một lần nữa
kiểm tra dữ liệu xấu và xóa nó,
và sau đó nhảy ra URL thành công.
Nó không mất nhiều để đoán những gì tôi sẽ làm tiếp theo,
và đó là, nếu bạn mở rộng chế độ xem xóa,
bạn sẽ nhận được tất cả các mã đó miễn phí.
Bạn chỉ cần cho biết các lĩnh vực mô hình nào
và đi đâu để thành công.
Vì vậy, điều quan trọng là,
khi bạn làm bài tập về nhà,
tôi chắc rằng một số bạn sẽ sao chép và
dán tất cả những thứ này. Điều đó sai rồi.
MakeCreate, MakeUpdate và
MakeDelete nên ngắn
như AutoCreate, AutoUpdate và AutoDelete.
Bởi vì bạn sẽ làm những chế
độ chỉnh sửa chung rất nhiều và
chúng tôi sẽ làm CRUD hơn và hơn nữa,
và bạn thực sự không muốn viết 15 dòng mã.
Đó là sự lặp lại không cần thiết, cắt và
dán không cần thiết và thay đổi mã nếu
bạn có thể giữ nó thực sự đơn giản.
Vì vậy, tôi về cơ bản có thể xây dựng một tập hợp đầy đủ
các hình thức CRUD và chức năng CRUD
với xác nhận cho một mô hình với
mã này và sau đó tôi thậm chí không cần phải có một forms.py,
Tôi chỉ có một models.py.
Vì vậy, nếu bạn đang làm Autos của
bạn, bạn sẽ nghĩ rằng tôi đã
phạm sai lầm nếu tôi đang làm một forms.py.
Bởi vì nếu tôi chỉ sử dụng views.py này theo cách này,
thay vì làm cho tất cả chúng trông giống như MakeUpdate,
sau đó bạn sẽ tiết kiệm cho mình rất nhiều
thời gian và năng lượng và chúng ta phải sửa đổi những điều này.
Nó dễ dàng hơn nhiều để tìm
tất cả các thay đổi và sau đó sửa đổi chúng.
Vì vậy, đó là một bước đi qua của mã mẫu cho Autos.
Bạn sẽ làm một nhiệm vụ về vấn đề này,
nhưng đừng chỉ sao chép mọi thứ.
Tôi đã thiết lập điều này để thời
gian bạn dành hiểu những gì đang xảy ra,
đặc biệt là trong quan điểm.
URL là niềm tự hào của bạn chỉ cần sao
chép,
các mô hình bạn chỉ cần sao chép, các URL bạn sẽ chỉ sao chép,
nhưng các quan điểm không chỉ sao chép nó,
tìm ra những gì đang thực sự xảy ra và đưa ra
cách dễ dàng hơn và ngắn gọn hơn để làm tất cả các công cụ này.
Django đang bắt đầu trông
thực sự đẹp vào thời điểm này.
Vì vậy, tôi hy vọng bạn thấy điều này hữu ích. Chào mừng.