TemplateView
Thuộc phần View dựa trên lớp trong hành trình Django của Coddy. Bài học 2 trên 18.
Bảng việc làm cần có trang Giới thiệu chỉ hiển thị một mẫu. Django có một lớp dành cho việc này, TemplateView. Phương thức get() đã được viết sẵn: phương thức này hiển thị mẫu có tên trong template_name. Một trang web công thức nấu ăn lưu mục câu hỏi thường gặp trong recipes/templates/recipes/pages/faq.html:
from django.views.generic import TemplateView
class FaqView(TemplateView):
template_name = "recipes/pages/faq.html"Đó là toàn bộ lớp hiển thị. Django gọi các lớp hiển thị dựng sẵn là lớp hiển thị tổng quát. Bạn thiết lập một lớp bằng các thuộc tính của lớp như template_name, rồi đoạn code Django viết sẽ đọc các thuộc tính đó.
template_name là tên bạn sẽ truyền vào render(): đường dẫn của tệp tính từ sau templates/. Bỏ sót một thư mục thì trang sẽ gặp lỗi TemplateDoesNotExist. Khai báo tuyến đường cũng giống như với mọi lớp hiển thị dựa trên lớp: path("faq/", views.FaqView.as_view(), name="faq").
Thử thách
DễHiển thị mẫu có sẵn jobs/templates/jobs/about.html tại /about/.
- Trong
jobs/views.py, thêmAboutView, mộtTemplateViewđể hiển thị mẫu đó. - Trong
jobs/urls.py, thêm tuyến đường"about/"có tênabout.
Mở /about/: trang hiển thị Job Board lists jobs at small tech companies in Berlin, Lisbon and London.
Tự làm thử
from django.shortcuts import render
from django.views import View
from .models import Job
class HomeView(View):
def get(self, request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
Tất cả bài học trong View dựa trên lớp
Tự luyện tập: Playground Django