Liệt kê danh sách bài viết trong Python Django
Lập trình web với Python bằng Django

Danh sách bài học
Liệt kê danh sách bài viết 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ữ 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, chúng ta đã hoàn thiện bài HỆ THỐNG ADMIN TRONG PYTHON DJANGO. Trong bài này Kteam sẽ nói cho các bạn về cách Liệt kê danh sách bài viết tồn tại trong model rồi đưa lên template hiển thị cho người dùng.
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
Bài này sẽ giới thiệu những nội dung sau:
- Truy vấn lấy bài viết và chuyển qua template
- Thiết kế template
- Tạo Path
Truy vấn lấy bài viết và chuyển qua template
Đầu tiên ta sẽ lấy toàn bộ bài viết mà ta đã học từ bài TƯƠNG TÁC DATABASE BẰNG NGÔN NGỮ PYTHON, sau đã sẽ chuyển qua template thông qua hàm render.
- Bước 1: ta sẽ import model Post để có thể truy vấn dữ liệu.
- Bước 2: tạo hàm list để xử lý request yêu cầu liệt kê bài viết
- Bước 3: tạo một biến Data kiểu dict, có key là Posts với value là câu truy vấn lấy toàn bộ bài viết và nó được sắp xếp bằng date, việc thêm dấu trừ là sắp xếp từ bài mới nhất đến bài cũ nhất
- Bước 4: render sang template blog.html, đưa Data vào tham số cuối để template dùng dữ liệu để tạo giao diện
Thiết kế template
Tiếp theo, ta sẽ tạo blog.html. Ta sẽ tạo folder template trong app blog, rồi tạo 1 folder blog để chứa template trên
- Bước 1: Extend đến base.html tương tự như những bài trước
- Bước 2: ở block content ta sẽ dùng vòng lặp for trong Jinja để liệt kê list Posts. Posts chính là key Post trong Data mà ta đã truyền ở tham số render. Value của key Posts chính là toàn bộ bài viết ta đã truy vấn.
- Bước 3: trong vòng lặp, Kteam sẽ tạo thẻ <h4>, để lấy cột date từ biến chạy post, ta cần cho biến nằm trong {{ }} để template hiểu cần gọi giá trị đó ra. Ngoài ra, Kteam muốn nó định dạng theo format “ngày-tháng-năm” nên ghi thêm format phía sau
- Bước 4: tiếp theo, tạo tag a để dẫn các đường link đến chi tiết bài viết, ở href Kteam muốn đường dẫn là /blog/{id của post}, sau này để hiện thị chi tiết bài viết Kteam sẽ giải thích bài sau. Cuối cùng, thẻ <a> sẽ có nội dung là tiêu đề bài viết nên Kteam sẽ gọi từ thuộc tính title của post.
Tạo Path
Cũng như hướng dẫn trước đây, đầu tiên Kteam sẽ khai báo path blog ở urls trong PythonWeb:
Rồi ta tạo file urls trong app blog:
Như vậy, ta mặc định vô đường dẫn /blog/ thì sẽ liệt kê bài viết ra. Bây giờ ta thử mở server và vào mục bài viết để kiểm tra thử:
Kết
Như vậy Kteam đã hướng dẫn các bạn xong cách liệt kê danh sách bài viết trong Python Django.
Ở bài tiếp theo, Kteam sẽ giới thiệu cho các bạn HIỂN THỊ THÔNG TIN BÀI VIẾT trong Python Django.
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. Đừ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 Liệt kê danh sách bài viết 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
Mình bị lỗi TemplateDoesNotExist at /blog/ cho mình hỏi sửa như thế nào ạ
ModuleNotFoundError: No module named 'blog.urls'
ai bị lỗi này không giúp với
Theo như bài học số 6: Thiết kế hoàn chỉnh blog thì http://127.0.0.1:8000/blog/ sẽ vào phần "Bài viết" trong app home/templates/blog.html? Ở bài này ta có thêm 1 blog.html nữa. Vậy cho mình hỏi tại sao mặc định lại là blog/templates/blog.html?
Mình code theo video nhưng để vào blog/templates/blog.html thì mình phải xóa đường dẫn truy cập vào home/templates/blog.html trong home/urls.py; Bởi nếu ko xóa mặc định sẽ truy cập vào home/templates/blog.html chứ ko phải blog/templates/blog.html? XIn hỏi mình đã sai ở đâu? Hay bài viết cũng đã xóa path của blog/ trong file urls.py của home?
Theo như bài học số 6: Thiết kế hoàn chỉnh blog thì http://127.0.0.1:8000/blog/ sẽ vào phần "Bài viết" trong app home/templates/blog.html? Ở bài này ta có thêm 1 blog.html nữa. Vậy cho mình hỏi tại sao mặc định lại là blog/templates/blog.html?
Mình code theo video nhưng để vào blog/templates/blog.html thì mình phải xóa đường dẫn truy cập vào home/templates/blog.html trong home/urls.py; Bởi nếu ko xóa mặc định sẽ truy cập vào home/templates/blog.html chứ ko phải blog/templates/blog.html? XIn hỏi mình đã sai ở đâu? Hay bài viết cũng đã xóa path của blog/ trong file urls.py của home?
Data = {'Posts': Post.objects.all().order_by("-date")}
em bị lỗi "Post has no objects"
em đã làm như video trước,
em đã kiểm tra Post thì vẫn có objects nhưng tới đây gọi ra lại ko được