Liệt kê danh sách bài viết trong Python Django

Lập trình web với Python bằng Django

5.0 (2 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 3 năm trước 32.334 lượt xem 16 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Liệt kê danh sách bài viết trong Python Django

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:

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 likeshare để ủ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

Đánh giá

vietpro đã đánh giá khoảng 1 năm trước

laRoi17 đã đánh giá 2 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Duong London đã bình luận khoảng 1 năm trước

Mình bị lỗi TemplateDoesNotExist at /blog/ cho mình hỏi sửa như thế nào ạ

 

cong0001 đã bình luận 2 năm trước

ModuleNotFoundError: No module named 'blog.urls' 

ai bị lỗi này không giúp với 

 

largotuan đã bình luận 5 năm trước

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?

largotuan đã bình luận 5 năm trước

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?

k3it4s4n đã bình luận 7 năm trước

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

Không có video.