Sử dụng Generic View trong Python Django
Lập trình web với Python bằng Django

Danh sách bài học
Sử dụng Generic View trong Python Django
Nội dung bài viết Học nhanh
Ghi chú
Nội dung bài viết bạn đang xem được update từ tháng 06/2019. Vì vậy sẽ có đôi chút khác biệt giữa VIDEO và NỘI DUNG BÀI VIẾT.
Chúng ta sẽ có nhiều cập nhập hơn về cả bài viết lẫn video trong thời gian tới. Nhớ like / share hoặc đánh giá 5 sao để Kteam có động lực nhé!
Cảm ơn các bạn!
Dẫn nhập
Ở bài trước, Kteam đã hướng dẫn các bạn xong HƯỚNG DẪN XỬ LÝ LOGIN VÀ LOGOUT USER TRONG PYTHON DJANGO
Trong bài này Kteam sẽ giới thiệu cho các bạn về cách sử dụng Generic View trong Django.
Nội dung
Để theo dõi bài này tốt nhất, bạn nên xem qua bài:
- GIỚI THIỆU VỀ PYTHON DJANGO
- TẠO PROJECT VỚI PYTHON DJANGO
- TẠO WEB APP VÀ XỬ LÝ KHI NGƯỜI DÙNG YÊU CẦU TRUY CẬP TRONG PYTHON DJANGO
- SỬ DỤNG TEMPLATE VÀ JINJA TRONG PYTHON DJANGO
- FILE TĨNH VÀ THIẾT KẾ WEB BẰNG BOOTSTRAP TRONG PYTHON DJANGO
- THIẾT KẾ HOÀN CHỈNH BLOG TRONG PYTHON DJANGO
- DÙNG MODEL TẠO BẢNG DATABASE BẰNG NGÔN NGỮ PYTHON
- TƯƠNG TÁC DATABASE BẰNG NGÔN NGỮ PYTHON
- HỆ THỐNG ADMIN TRONG PYTHON DJANGO
- LIỆT KÊ DANH SÁCH BÀI VIẾT TRONG PYTHON DJANGO
- HIỂN THỊ THÔNG TIN BÀI VIẾT TRONG PYTHON DJANGO
- LOẠI BỎ HARDCODED URL TRONG PYTHON DJANGO.
- XỬ LÝ LỖI 404 TRONG PYTHON DJANGO
- DJANGO SỬ DỤNG MÔ HÌNH MVC
- UPLOAD FILE ẢNH VÀO TRANG WEB ĐƯỢC LÀM BẰNG DJANGO MVC
- TẠO FORM ĐĂNG KÝ TÀI KHOẢN TRONG PYHTON DJANGO
- HƯỚNG DẪN XỬ LÝ LOGIN VÀ LOGOUT USER TRONG PYTHON DJANGO
Bài này sẽ giới thiệu những nội dung sau:
- Generic View là gì?
- Sử dụng ListView và DetailView
- Cách gọi Generic View tối giản hơn
Generic View là gì?
Viết những ứng dụng web có thể có những thứ không thay đổi, và từ đó ta sẽ lặp lại những pattern liên tục... Django cố gắng xử lý những đơn điệu đó tại pattern model và
template (view), nhưng lập trình viên website vẫn phải mệt nhọc xử lý tạo tầng
view (controller).
Generic View được phát triển để giải quyết vấn đề đó. Người ta đã thu gom những cái chung của những kiến thức và mô hình ở
view (controller) để phát triển và abstract chúng sao cho chúng ta có thể viết xử lý data trong
views mà không cần viết code quá nhiều.
Chúng ta sẽ phát hiện ra có những task khá chung chung với nhau như: hiển thị
list trong object, hiển thị thông tin chi tiết,...
Sử dụng ListView và DetailView
Bây giờ tại views của app blog, Kteam sẽ thay thế hàm list bằng
class ListView, hàm post bằng class DetailView.
Ta sửa lại views.py như sau:
- import class ListView và DetailView.
- khai báo class PostListView kế thừa ListView. Ta dùng queryset để lưu data truy vấn thay vì model (vì model sẽ thấy data từ trên xuống trong khi Kteam muốn lấy data theo thời gian từ cũ đến mới). Khai báo template_name, key của queryset. paginate_by là để phân trang, nghĩa là hiển thị ở template 10 bài đầu, rồi người dùng nhấn next thì mới xuất hiện 10 bài cũ hơn.
- khai báo PostDetailView kế thừa DetailView. Vì DetailView sẽ truy vấn bằng primary key của model nên ta chỉ cần khai báo model để Django biết để truy vấn. Ngoài ra khai báo template_name.
Tiếp theo, ta sẽ sửa lại ở urls.py:
- vì là class nên không thể đưa class thẳng vào url, ta sẽ gọi function as_view của class.
- ở PostDetailView thì class sẽ truy vấn bằng primary key, nên thay url id thành pk để path hợp lệ.
Vì ở ListView ta có phân trang, nên ta chỉnh template thêm phần pagination:
- Ta thêm điều kiện là nếu còn tiếp thì sẽ hiển thị thêm tag a tiếp theo với đường dẫn hiện tại kèm theo tham số page bằng số trang tiếp theo
Giờ ta thử kiểm tra, (Kteam sẽ cố tình chuyển paginate_by xuống bằng 1 để có thể kiểm tra link nhấn bài tiếp theo):
Cách gọi Generic View tối giản hơn
Nếu các bạn nhớ bài trước Kteam đã hướng dẫn dùng thư viện để login và logout, bản chất nó cũng là generic view. Nếu các bạn nhớ cách viết thì ta có thể tối giản dòng code trên bằng cách viết như sau, tại urls.py app blog:
Kết luận
Trong bài này, chúng ta đã tìm hiểu cách Sử dụng Generic View.
Bài sau chúng ta sẽ cùng tìm hiểu về cách TẠO BÌNH LUẬN TRONG BÀI VIẾT.
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Và đừng quên “Luyện tập – Thử Thách – Không ngại khó”
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Sử dụng Generic View trong Python Django dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Tác giả/Dịch giả
Khóa học
Lập trình web với Python bằng Django
Lập trình web với Python bằng Django