Django chuyển dữ liệu sang JavaScript
Thậm chí tốt hơn, bạn có thể vượt qua các cấu trúc dữ liệu phức tạp theo cách này mà không cần phải tranh luận nhiều. Ví dụ: nếu bạn có một đối tượng từ điển với các danh sách từ điển lồng nhau, bạn có thể chuyển trực tiếp đối tượng này vào thẻ mẫu Show
Trong ví dụ này, tôi cần chuyển một đối tượng có nhiều thuộc tính bản đồ khác nhau và danh sách các điểm tham chiếu có độ dài thay đổi trong đó mỗi phần tử là một từ điển lồng nhau của Như bạn có thể thấy trong khung nhìn ở trên, chúng ta tạo một đối tượng có tên context và điền dữ liệu vào đó, đồng thời gửi nó dưới dạng tham số đầu tiên trong hàm Tạo biến trong mẫuBạn cũng có thể tạo các biến trực tiếp trong mẫu bằng cách sử dụng thẻ mẫu 0Thí dụ
Chạy ví dụ »Bạn sẽ tìm hiểu thêm về các thẻ mẫu trong chương tiếp theo Dữ liệu từ một mô hìnhVí dụ trên cho thấy một cách tiếp cận dễ dàng về cách tạo và sử dụng các biến trong một mẫu Thông thường, hầu hết dữ liệu bên ngoài mà bạn muốn sử dụng trong mẫu đều đến từ một mẫu Chúng ta đã tạo một mô hình trong các chương trước, được gọi là 2, chúng ta sẽ sử dụng mô hình này trong nhiều ví dụ trong các chương tiếp theo của hướng dẫn nàyĐể lấy dữ liệu từ mô hình 2, chúng tôi sẽ phải nhập nó vào tệp views.py và trích xuất dữ liệu từ nó trong chế độ xem Tôi cũng mới sử dụng Django. Để làm những gì bạn muốn làm (chuyển các giá trị từ python sang js), tôi đã sử dụng các truy vấn ajax (sử dụng jquery) và sau đó thực hiện một JsonResponse cho lệnh gọi ajax. Cuộc gọi ajax sau đó xử lý dữ liệu theo yêu cầu class InstructorDeleteView(DeleteView): Sau đó, trong mẫu của bạn, bạn có thể thêm js và có lệnh gọi ajax đến chế độ xem ở trên để nó có thể nhận được JsonResponse Có một số mã ở giữa, nhưng tôi muốn hiển thị dòng cụ thể bên dưới. Tôi đang gửi dữ liệu project_list tới cơ sở. html với kết xuất (không có json) Tôi có thể lấy các giá trị id khi tôi viết {{ item. id }} nhưng khi tôi viết {{ item. tên }} tôi gặp lỗi *
Ghi chú. project_list chứa dữ liệu Barcelona(id=1) và Madrid(id=2) Bạn có biết tại sao lại xảy ra lỗi đó không và cách lấy thông tin khác như tên, địa chỉ, email, v.v. ? *CẬP NHẬT* - Cảm ơn những người trong nhận xét đã chỉ ra rằng điều này đã tồn tại ở Django dưới dạng thẻ mẫu Khi chúng ta muốn chuyển dữ liệu từ Django sang JavaScript, chúng ta thường nói về API, bộ nối tiếp, lệnh gọi JSON và AJAX. Điều này thường được kết hợp với sự phức tạp bổ sung khi có React hoặc Angular chạy giao diện người dùng Nhưng đôi khi bạn muốn làm điều gì đó nhanh chóng và bẩn thỉu - vẽ biểu đồ và không bận tâm đến toàn bộ cơ sở hạ tầng ứng dụng một trang Cách tiếp cận ngây thơGiả sử chúng ta có một ứng dụng Django với mô hình sau
Và chúng ta có một 0 đơn giản
Bây giờ, chúng ta đã quyết định vẽ một biểu đồ đường đơn giản, sử dụng Biểu đồ. js và chúng tôi muốn tránh thực hiện lệnh gọi AJAX/lộ API/v.v. Nếu chúng tôi muốn hiển thị một biểu đồ đường đơn giản trong 1 của mình, thì mã sẽ trông như thế này (được lấy từ các mẫu của họ)
Điều này sẽ tạo ra những điều sau đây Bây giờ, nếu chúng ta muốn biểu đồ dữ liệu đến từ 2, chúng ta có thể tiếp cận nó như thế
Và sau đó, chúng tôi kết xuất một mảng JavaScript bằng mẫu Django
Bây giờ, cái này hoạt động, nhưng nó quá bẩn đối với sở thích của tôi Chúng tôi không còn có JavaScript nữa mà thay vào đó là JavaScript, được trộn với các mẫu Django Chúng tôi mất cơ hội trích xuất JavaScript sang một trang riêng. tập tin js. Chúng tôi cũng mất cơ hội chạy đẹp hơn trên JavaScript đó Chúng ta có thể làm điều đó tốt hơn và vẫn nhanh chóng về điều đó Tăng gia vị cho mọi thứChiến lược mà chúng ta sẽ theo đuổi là
Điều này có lợi ích là giữ cho mã JavaScript sạch mọi ngôn ngữ mẫu Django và cũng có mẫu có thể sử dụng lại để lấy dữ liệu chúng tôi cần Nó giống như làm một AJAX dễ dàng hơn Đây là ví dụ, theo chiến lược này
Bây giờ, chúng tôi sẽ trích xuất mã JavaScript của mình thành một tệp tĩnh có tên là 8Điều này mang lại cho chúng tôi những điều sau đây 1
Như bạn có thể thấy, điều kỳ diệu đang xảy ra trong div ẩn. Chúng tôi ẩn div để xóa nó khỏi bất kỳ bố cục nào Tại đây, bạn có thể đặt cho nó một id thích hợp hoặc sử dụng bất kỳ phần tử HTML nào bạn thấy phù hợp Thuộc tính 5 (tùy ý & không phải thứ được xác định trước) chứa JSON mà chúng ta cầnBây giờ, cuối cùng, chúng tôi sẽ triển khai chức năng đơn giản sau để lấy và phân tích dữ liệu chúng tôi cần
Và với điều đó, 8 của chúng ta đã sẵn sàng
Một mô hình nhanh và bẩn, khi bạn chỉ muốn vận chuyển một cái gì đó. Đây là kết quả cuối cùng tuyên bố từ chối trách nhiệmTôi sẽ không khuyên bạn nên sử dụng phương pháp này cho bất cứ điều gì hơn là một bằng chứng nhanh chóng và bẩn thỉu về khái niệm Khi JavaScript của bạn bắt đầu phát triển về kích thước, sẽ rất khó để kiểm soát nó và cách tiếp cận được đề xuất là sử dụng toàn bộ SPA, sử dụng một trong những khung phổ biến (đối với chúng tôi, đó là React) Làm cách nào để lấy dữ liệu từ Django sang JS?Chiến lược mà chúng tôi sẽ thực hiện là. kết xuất và lưu trữ nó trong ngữ cảnh. Kết xuất phần tử truy vấn div đó, đọc thuộc tính data-json và sử dụng JSON. phân tích cú pháp để lấy dữ liệu cần thiết .
Làm cách nào để chuyển dữ liệu từ chế độ xem sang js trong Django?Nói chung, bạn có 4 cách để chuyển dữ liệu từ JavaScript sang chế độ xem Django. . As an element in the URL: e.g. path('/some/url/ Là dữ liệu POST trong một lần gửi biểu mẫu Dưới dạng JSON trong POST Django có thể hoạt động với JavaScript không?Mặc dù phần lớn lõi của Django là Python, nhưng các ứng dụng đóng góp của quản trị viên và gis chứa mã JavaScript . Vui lòng tuân theo các tiêu chuẩn viết mã này khi viết mã JavaScript để đưa vào Django.
{% khối %} trong Django là gì?Giới thiệu {% block %} Thẻ khối được sử dụng để xác định một khối có thể bị các mẫu con ghi đè . Nói cách khác, khi bạn xác định một khối trong mẫu cơ sở, bạn đang nói rằng khu vực này sẽ được điền nội dung từ một tệp mẫu con khác. |