Geodjango обрабатывает несколько запросов в одном представлении - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю над веб-приложением для визуализации пространственных данных.То, что я хочу реализовать (по крайней мере, на данный момент), это иметь список кнопок, каждая из которых приведет к визуализации данных на основе различных фильтров.Чтобы сделать его более конкретным, мой сервер на основе django поддерживает базу данных с датчиками парковки, каждый из которых имеет информацию о состоянии «Занят» или «Незанят», в зависимости от того, находится ли автомобиль над соответствующей парковкой.Функциональность, которую я хочу предложить, состоит в том, чтобы изначально загружать карту без отображения информации, а затем иметь 3 кнопки: - один, чтобы показать все датчики в области - один, чтобы показать занятые датчики - один, чтобы показать незанятые я.используя google-apis / javascript для целей визуализации.Я предполагаю, что для каждой кнопки будет назначен отдельный запрос ajax.Итак, в основном мой вопрос находится на уровне дизайна django.Должны ли эти функции быть реализованы как разные функции в рамках одного и того же представления?И если да, то как должны быть реализованы функции в views.py, чтобы различать, какая функция вызывается при каждом нажатии кнопки (возможно, некоторые метаданные следует передавать в качестве аргумента из шаблона в представление, чтобы идентифицировать запрос)?Нужно ли перенаправить на другой URL?Кроме того, я предполагаю, что каждый раз, когда должен отображаться результат визуализации, данные из предыдущего запроса должны как-то очищаться.Вот попытка описать то, что я ищу, основываясь на концепции некоторых метаданных, которые я описал выше: views.py:

def getAllSens(request):
if request.(#metadata1):
    data=Sensorsreal.objects.filter(status='Occupied')
elif request.(#metadata2):
    data=Sensorsreal.objects.filter(status='Unoccupied')
else
    data=Sensorsreal.objects.all()
return render_to_response('waypoints/index.html', {"sensors":data})

index.html:

...
<script>
var BPresSens=document.createElement('BUTTON');

mymap.controls[google.maps.ControlPosition.TOP_CENTER].push(BPresSens);

BPresSens.addEventListener('click', function() {    
$.ajax({
    url: '{% url "index" %}',
    method: 'GET', // or another (GET), whatever you need
    data: {
        click: true
        //metadata1
    },
    success: function (data, metadata1) {        
        putmarkers(mymap)
    }
});
});
</script>
...

Iнемного покопался, но, к моему удивлению, считая это тихой базовой концепцией, я не нашел связанных вопросов / ответов.Единственная связанная с этим тема, которую я обнаружил, касалась обработки нескольких форм, что является случаем, когда вводимые пользователем данные передаются в часть django-backend, таким образом, это не относится к моему случаю.Извините, что не предоставил более полный код, но не смог придумать что-то более сложное.Заранее спасибо!

...