3 điều bạn đề cập đến là phổ biến, thực hiện, mô hình, năm, sẽ là 3 giá trị đầu vào. Khi được cung cấp cho máy chủ, một đối tượng chứa các chi tiết sẽ được trả về trang gọi. Trang đó sẽ phân tích chi tiết đối tượng (sử dụng JavaScript) và cập nhật giao diện người dùng để hiển thị chúng cho người dùng.
Từ phía Django, cần phải có cơ sở để lấy 3 yếu tố đầu vào và trả lại kết quả. Từ phía máy khách, cần phải có các phương tiện để truyền 3 đầu vào cho máy chủ và sau đó phân tích cú pháp phản hồi của máy chủ một cách thích hợp.
Có khung REST api cho Django giúp bạn dễ dàng thêm "api" được đề cập ở trên - Piston. Sử dụng Piston, bạn chỉ cần tạo một URL cho tài nguyên đó, và sau đó thêm một trình xử lý để xử lý nó. (Bạn vẫn sẽ cần phải đọc lướt tài liệu Piston, nhưng điều này sẽ cho bạn một ý tưởng về những gì có vẻ như)
urls.py:
vehicle_details = Resource(handler=VehicleDetails)
url(r'^vehicle/(?<make>.*)/(?<model>.*)/(?<year\d{2,4}/(?P<emitter_format>[a-z]{1,4}), vehicle_details, name='vehicle_details'),
handler.py:
class VehicleDetails(BaseHandler):
methods_allowed = ('GET',)
model = Vehicles #whatever your Django vehicle model is
def read(self, request, *args, **kwargs):
# code to query the DB and select the options
# self.model.objects.filter()...
# Build a custom object or something to return
return custom_object
này chỉ đơn giản là thiết lập các www.yoursite.com/vehicle/[make]/ url [model]/[year]/json trả về một đối tượng dữ liệu tùy chỉnh trong JSON để jquery phân tích cú pháp. Về phía khách hàng, bạn có thể sử dụng jquery để thiết lập một sự kiện (bind) để khi tất cả 3 drop down có một giá trị được chọn, nó sẽ thực thi một $ .get() tới URL api. Khi nó nhận được kết quả này, nó chuyển nó vào trình phân tích cú pháp JSON Jquery, và cung cấp cho đối tượng tùy chỉnh, như một đối tượng javascript. Đối tượng đó sau đó có thể được sử dụng để điền thêm các menu thả xuống.
(cảnh báo lớn, tôi chỉ viết những điều sau đây ra khỏi đỉnh đầu của tôi, vì vậy nó không có nghĩa là để được sao chép và dán. Nó chỉ cho ý tưởng chung.)
<script type="text/javascript">
// On document load
$(function() {
$('#dropdown_make').bind('change', checkForValues());
$('#dropdown_model').bind('change', checkForValues());
$('#dropdown_year').bind('change', checkForValues());
});
function checkForValues() {
if ($('#dropdown_make').val() && $('#dropdown_model').val() && $('#dropdown_year').val())
updateOptions();
}
function updateOptions() {
url = '/vehicle/';
url += $('#dropdown_make').val() + '/';
url += $('#dropdown_model').val() + '/';
url += $('#dropdown_year').val() + '/';
url += 'json/';
$.get(url, function(){
// Custom data object will be returned here
})
}
</script>
Không phải là cùng một chàng trai ... chỉ là chúng tôi đang cố gắng giải quyết cùng một vấn đề ... cảm ơn vì liên kết này, nó trông giống như một khởi đầu tốt cho tôi. –
Tôi là anh chàng, và điều này thật kỳ lạ :) – Dustin