2008-10-14 33 views
5

Tôi đang thực hiện rất nhiều công việc JavaScript trong trình duyệt và muốn có một số chức năng phụ trợ đó trong giao diện người dùng. Cụ thể, sẽ tốt hơn nếu có các chức năng get(), save(), all()count() có sẵn cho khách hàng. Ngoài ra, thật tuyệt vời khi có danh sách trường của mô hình đã có sẵn trong đối tượng JavaScript được tạo.Tạo đối tượng JavaScript ra khỏi Mô hình Django

Cho dù người dùng hiện tại có thể đọc hoặc viết hồ sơ là một vấn đề riêng biệt, tôi sẽ đối phó với việc sử dụng xác thực của Django. Trong thời gian này, việc truy xuất sẽ là một sự khởi đầu.

Tóm lại, có mã nào sẽ tạo mô hình JavaScript từ mô hình Django không?

Cảm ơn.

Trả lời

7

Có vẻ như bạn đang tìm kiếm giao diện JavaScript hoàn chỉnh cho API mô hình và bộ truy vấn. Tôi không thể tưởng tượng rằng điều này có thể đã từng được thực hiện hoặc thậm chí là một nhiệm vụ đơn giản. Bạn sẽ không chỉ cần tạo ra các trường hợp JavaScript mô hình bằng cách nào đó (nhiều hơn JSON serialization cung cấp, vì bạn cũng muốn các phương thức) nhưng bạn cần phải trưng ra một dịch vụ web có thể xử lý mọi loại gọi DB-API. Tôi thậm chí không thể tưởng tượng bắt đầu từ đâu và các vấn đề an ninh có thể quá nhiều để dễ dàng vượt qua.

Cách tiếp cận thay thế (và đơn giản hơn) sẽ là sử dụng một trong các mô-đun REST Django khác nhau và tuần tự hóa JSON. Bạn có thể thực hiện một yêu cầu AJAX GET trên một tài nguyên, có thể được xác định bởi một loạt các tham số truy vấn sẽ tương đương với các bộ lọc truy vấn chuỗi. Điều này sẽ trả về biểu diễn JSON của các giá trị của mô hình. Sau đó bạn có thể sửa đổi đối tượng JavaScript và sử dụng yêu cầu POST của AJAX đã quá tải để duy trì các thay đổi trở lại máy chủ. Bạn sẽ không có quyền truy cập vào các phương thức của mô hình, do đó chức năng sẽ phải được thực hiện lại nhưng thực hiện bất kỳ thay đổi nào đối với một mô hình phải đơn giản đủ - Về cơ bản, JavaScript tương đương với việc sử dụng biểu mẫu HTML để sửa đổi dữ liệu.

+0

Vâng, tôi nghĩ đây là cách tiếp cận đúng, có thể bạn muốn đọc http://jacobian.org/writing/rest-worst-practices/ có lẽ trước khi bạn bắt đầu. –

0

Có vẻ như bạn muốn JSON encode dữ liệu đối tượng của mình. Xem JSON.org để biết thêm về định dạng dữ liệu.

+0

Mã hóa JSON chỉ cung cấp dữ liệu đối tượng. Nó không cung cấp mô hình tham chiếu (hoặc tên của nó) và không có chức năng nào. :( – Dimitry

1

Bạn cần bộ nối tiếp dữ liệu. Bạn có thể làm điều đó với django được xây dựng trong serializers. Nó được ghi lại trên trang web django chính thức. djangoproject_topics-serialization

1

Tôi đã bắt đầu một dự án mà tôi nghĩ chính xác những gì bạn đang tìm kiếm. Bạn có thể tìm thấy nó tại github_bumby_jslib.
Hiện tại, chỉ hỗ trợ get(), nhưng tôi hy vọng sẽ sớm mở rộng ứng dụng này. Vui lòng đóng góp các bản vá lỗi :)

jslib là một ứng dụng Django nhằm đơn giản hóa việc tích hợp AJAX với các dự án Django của bạn.

0

Vì vậy, đã lâu rồi tôi mới đăng câu hỏi gốc và kể từ đó đã có một số sự phát triển ở Djangoland. Không ít nhất trong số đó là một thư viện nhỏ được gọi là Django REST Framework. Tôi sẽ sử dụng nó trên một dự án mới và nó trông khá kewl.

http://www.django-rest-framework.org

Các vấn đề liên quan