if (StringA.ToUpperInvariant() == StringB.ToUpperInvariant()) {
Люди сообщают, что ToUpperInvariant () быстрее, чем ToLowerInvariant ().
Три основных элемента, которые вы упомянули, - марка, модель, год - будут тремя входными значениями. При передаче на сервер объект, содержащий детали, будет возвращен на вызывающую страницу. Эта страница будет анализировать детали объекта (используя JavaScript) и обновлять пользовательский интерфейс, чтобы отображать их пользователю.
Со стороны Django, должны быть средства, позволяющие принимать 3 входа и возвращать выход. Со стороны клиента должны быть средства для передачи 3 входных данных на сервер, а затем для соответствующего анализа ответа сервера.
Для Django существует инфраструктура REST api, которая позволяет довольно легко добавить "api" "упомянутый выше - Поршень . Используя Piston, вам просто нужно создать URL-адрес для этого ресурса, а затем добавить обработчик для его обработки. (вам все равно нужно бегло просмотреть документацию по поршню, но это должно дать вам представление о том, как он выглядит)
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
Это просто устанавливает URL-адрес www.yoursite.com/vehicle/[makepting/[model ]/ [год] / json, чтобы вернуть пользовательский объект данных в JSON для jquery для синтаксического анализа.
На стороне клиента вы можете использовать jquery для настройки события (привязки), чтобы, когда во всех 3 раскрывающихся меню было выбрано значение, он выполнит $ .get () для URL-адреса API. Когда он получает этот результат обратно, он передает его в парсер JQuery JSON и предоставляет настраиваемый объект в виде объекта javascript. Затем этот объект можно было бы использовать для заполнения большего количества выпадающих меню.
(Большое предупреждение, я просто написал следующее в голове, поэтому он не предназначен для копирования и вставки. Это просто для общей идеи.)
<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>
Это странно: Поля выбора с динамической фильтрацией в раскрывающемся списке с помощью Django
Его вопрос:
«Вот ситуация: у меня есть база данных с автомобилем марки и модели. Когда пользователь выбирает марку, я хочу обновить раскрывающееся меню моделей только моделями, связанными с этой маркой ... Поэтому я хочу использовать Ajax для заполнения данных ».
Вы не тот парень? :)