Las 3 cosas que mencionas son comunes, marca, modelo, año, serían los 3 valores de entrada. Cuando se entrega al servidor, un objeto que contiene los detalles se devolverá a la página de llamada. Esa página analizará los detalles del objeto (usando JavaScript) y actualizará la UI para mostrarlos al usuario.
Desde el lado de Django, tiene que haber las instalaciones para tomar las 3 entradas y devolver la salida. Desde el lado del cliente, tiene que haber las facilidades para pasar las 3 entradas al servidor, y luego analizar apropiadamente la respuesta del servidor.
Hay un marco API REST para Django que hace que sea bastante fácil agregar la "API" mencionada anteriormente - Piston. Con Piston, solo necesita crear una URL para ese recurso y luego agregar un controlador para procesarlo. (Usted todavía tiene que rozar la documentación del pistón, pero esto debe darle una idea de lo que parece)
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
Esto simplemente establece el www.yoursite.com/vehicle/[make]/ url [modelo]/[año]/json para devolver un objeto de datos personalizado en JSON para que jquery lo analice.
En el lado del cliente, puede usar jquery para configurar un evento (vincular) para que cuando las 3 listas desplegables tengan un valor seleccionado, ejecute $ .get() a la URL de la API. Cuando obtiene este resultado, lo pasa al analizador Jquery JSON, y le da el objeto personalizado, como un objeto javascript. Ese objeto podría usarse para poblar más menús desplegables.
(Big advertencia, que acabo de escribir lo siguiente de la parte superior de la cabeza, por lo que no está destinado a ser distribuido, copiado y pegado. Es sólo por la idea general.)
<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>
No es la
el mismo tipo ... es solo que estamos tratando de resolver el mismo problema ... gracias por el enlace, parece un buen comienzo para mí. –
Soy el chico, y esto es extraño :) – Dustin