Học Django trong 14 Ngày - Ngày 4: Views và Templates
By admin, at: 10:12 Ngày 17 tháng 6 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes


Chào mừng bạn đến với Ngày 4 của loạt bài Tìm hiểu Django trong 14 ngày của chúng tôi! Hôm nay, chúng ta sẽ đi sâu vào một trong những phần cơ bản nhất của bất kỳ ứng dụng Django nào: views và templates. Hai thành phần này hoạt động cùng nhau để xử lý các yêu cầu của người dùng và tạo ra các phản hồi HTML mà người dùng nhìn thấy trong trình duyệt của họ.
Trong hướng dẫn này, bạn sẽ học cách:
-
Tạo views (dựa trên hàm và dựa trên lớp)
-
Kết nối views với URLs
-
Làm việc với Django templates
-
Truyền dữ liệu động từ views đến templates
-
Xử lý đầu vào của người dùng và forms
Hãy bắt đầu thôi.
1. Giới thiệu về Views và Templates
Trong Django:
-
Views xử lý logic đằng sau một yêu cầu, chúng quyết định người dùng nên xem hoặc tương tác với cái gì.
-
Templates hiển thị đầu ra, chúng xác định nội dung nên trông như thế nào trong trình duyệt.
Cùng nhau, chúng làm cho ứng dụng web của bạn trở nên năng động, chức năng và thân thiện với người dùng.
2. Tạo Views
Django cung cấp hai loại views: views dựa trên hàm và views dựa trên lớp. Views dựa trên hàm là các hàm đơn giản nhận yêu cầu HTTP làm đối số và trả về phản hồi HTTP. Mặt khác, views dựa trên lớp cung cấp cách xử lý các yêu cầu có cấu trúc hơn bằng cách sử dụng kế thừa dựa trên lớp.
Views dựa trên hàm
Để tạo một view dựa trên hàm, bạn định nghĩa một hàm Python nhận đối tượng HttpRequest
làm tham số và trả về đối tượng HttpResponse
.
Views dựa trên lớp
Views dựa trên lớp cung cấp tính linh hoạt và khả năng tái sử dụng mã cao hơn. Bạn tạo một lớp kế thừa từ View
của Django hoặc một trong các lớp con của nó. Bằng cách ghi đè các phương thức cụ thể, bạn định nghĩa hành vi cho các phương thức HTTP khác nhau.
Định tuyến URL
Để ánh xạ views đến các URL cụ thể, bạn cần định nghĩa các mẫu URL trong tệp urls.py
của dự án Django. Điều này cho phép bạn liên kết một mẫu URL với một hàm hoặc lớp view.
3. Làm việc với Templates
Templates trong Django được sử dụng để tạo HTML một cách động. Chúng cung cấp một cách để tách logic trình bày khỏi mã thực tế.
Cơ bản về ngôn ngữ Template
Ngôn ngữ template của Django cho phép bạn nhúng nội dung động, thực hiện các thao tác logic và lặp lại dữ liệu bằng cách sử dụng các thẻ template và bộ lọc.
Kế thừa Template
Kế thừa template cho phép bạn định nghĩa một template cơ sở với các phần tử chung và mở rộng nó bằng nội dung bổ sung hoặc ghi đè các phần cụ thể trong các template con. Điều này thúc đẩy việc tái sử dụng mã và giúp duy trì bố cục nhất quán trên toàn bộ ứng dụng của bạn.
Thẻ và bộ lọc Template
Thẻ và bộ lọc template cung cấp chức năng bổ sung trong các template. Thẻ cho phép bạn thực hiện các thao tác phức tạp hơn và điều khiển luồng, trong khi bộ lọc cho phép bạn thao tác và định dạng dữ liệu trong template.
4. Truyền dữ liệu đến Templates
Để hiển thị dữ liệu động trong các template, bạn cần truyền dữ liệu từ views đến templates. Django cung cấp một số cách để truyền dữ liệu đến templates.
Dữ liệu Context
Dữ liệu context chứa các biến có thể truy cập được trong template. Bạn có thể truyền dữ liệu context đến các template khi hiển thị chúng trong views.
Hiển thị dữ liệu động
Ngôn ngữ template của Django cho phép bạn hiển thị dữ liệu một cách động dựa trên các điều kiện hoặc lặp lại qua các danh sách và từ điển.
Bộ xử lý context Template
Bộ xử lý context template là các hàm thêm dữ liệu vào context cho mọi template được hiển thị trong ứng dụng của bạn. Chúng cung cấp một cách để truyền dữ liệu chung, chẳng hạn như thông tin người dùng hoặc cài đặt trang web, đến tất cả các template mà không cần truyền chúng một cách rõ ràng trong mọi view.
5. Phân phối URL và Tham số
Phân phối URL liên quan đến việc ánh xạ URL đến các views cụ thể trong Django. Nó cho phép bạn định nghĩa các mẫu và chụp các tham số từ URL.
Mẫu URL và biểu thức chính quy
Django sử dụng biểu thức chính quy để khớp URL và trích xuất các tham số. Bạn có thể định nghĩa các mẫu URL trong tệp urls.py
của dự án bằng biểu thức chính quy.
Chụp các tham số URL
Các tham số URL là các giá trị được chụp từ URL và được truyền đến view. Chúng cho phép bạn tạo các URL động có thể xử lý các đầu vào khác nhau.
Tham số truy vấn
Tham số truy vấn là các tham số bổ sung được thêm vào URL sau dấu chấm hỏi (?). Chúng cho phép bạn truyền dữ liệu bổ sung đến view, điều này có thể hữu ích để lọc hoặc sắp xếp dữ liệu.
6. Xử lý Forms và Đầu vào của Người dùng
Forms đóng một vai trò quan trọng trong phát triển web để chụp đầu vào của người dùng và xử lý dữ liệu. Django cung cấp một hệ thống xử lý form mạnh mẽ.
Tạo forms
Django cho phép bạn tạo forms bằng các lớp Python. Bạn định nghĩa các trường form và quy tắc xác thực, và Django xử lý việc hiển thị và xử lý dữ liệu form.
Xác thực và xử lý dữ liệu form
Hệ thống xử lý form của Django tự động xác thực dữ liệu form dựa trên các quy tắc đã được định nghĩa. Nó cung cấp các phương thức xác thực tích hợp sẵn và thông báo lỗi cho các trường hợp xác thực phổ biến.
Hiển thị lỗi form
Khi form không vượt qua quá trình xác thực, Django cung cấp các cơ chế để hiển thị thông báo lỗi cùng với các trường form, cho phép người dùng sửa đầu vào của họ.
7. Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về views và templates trong Django. Chúng ta đã học cách tạo views bằng cả phương pháp dựa trên hàm và dựa trên lớp, cách làm việc với templates, truyền dữ liệu đến templates, xử lý phân phối URL và tham số, và xử lý forms và đầu vào của người dùng. Việc hiểu về views và templates là rất quan trọng để xây dựng các ứng dụng web năng động và tương tác với Django.
FAQs
Câu 1: Tôi có thể sử dụng cùng một view cho nhiều mẫu URL không?
Có, bạn có thể sử dụng cùng một view cho nhiều mẫu URL bằng cách định nghĩa nhiều mẫu trong tệp urls.py
của bạn ánh xạ đến cùng một hàm hoặc lớp view.
Câu 2: Tôi có thể truyền dữ liệu từ templates đến views không?
Có, bạn có thể truyền dữ liệu từ templates đến views bằng cách bao gồm dữ liệu trong URL hoặc sử dụng forms để gửi dữ liệu qua yêu cầu HTTP POST.
Câu 3: Làm thế nào tôi có thể xử lý việc tải lên tệp trong các forms Django?
Django cung cấp FileField
hoặc ImageField
để xử lý việc tải lên tệp. Bạn có thể thêm các trường này vào forms của mình và cấu hình views của mình để xử lý các tệp đã tải lên một cách thích hợp.
Câu 4: Tôi có thể sử dụng JavaScript trong các templates Django không?
Có, bạn có thể sử dụng JavaScript trong các templates Django. Django cung cấp một cách để bao gồm mã JavaScript và tương tác với nó để tăng cường chức năng của các ứng dụng web của bạn.
Câu 5: Có bất kỳ lối tắt nào có sẵn cho các tác vụ view phổ biến trong Django không?
Có, Django cung cấp nhiều lối tắt và hàm trợ giúp để đơn giản hóa các tác vụ view phổ biến, chẳng hạn như hiển thị templates, chuyển hướng người dùng, xử lý gửi form, và hơn thế nữa.
Câu 6: Tôi có thể sử dụng các công cụ template của bên thứ ba với Django không?
Có, Django hỗ trợ nhiều công cụ template, bao gồm cả công cụ mặc định của nó, công cụ template của Django. Bạn cũng có thể tích hợp các công cụ template của bên thứ ba như Jinja2 nếu cần.
Câu 7: Làm thế nào tôi có thể xử lý các yêu cầu AJAX trong các views Django?
Các views Django có thể xử lý các yêu cầu AJAX như bất kỳ yêu cầu HTTP nào khác. Bạn có thể sử dụng các công cụ tích hợp sẵn của Django hoặc các thư viện của bên thứ ba để xử lý và phản hồi các yêu cầu AJAX một cách thích hợp.