Взять данные из базы данных с помощью JavaScript - PullRequest
2 голосов
/ 24 сентября 2019

В функции Javascript мне нужны данные из базы данных.

Что я должен использовать XMLHttpRequest или fetch() или Ajax*?

Я попробовал первый, но где-тоЯ прочитал старый и fetch() должен быть предпочтительным.Это правда?

Я новичок, в любом случае мой file.js:

function FilterBy(selezione) {
...
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState === 4 && this.status === 200) {
            document.getElementById("test").innerHTML = this.responseText;
        }
      };
      //xhttp.open("GET", "lists/getlistname/?m="+maschio+"&f="femmina+"&n="neutro+"&l="linguaggio+"&i="initial", true);
      //xhttp.open("GET", "/lists/getlistname/?maschio=True", true);
      xhttp.open("GET", "/lists/getlistname/", true);
      //xhttp.send("m="+maschio+"&f="+femmina+"&n="neutro+"&l="linguaggio+"&i="initial");
      xhttp.send("maschio=True&femmina=False&neutro=False&linguaggio=romano&initial=a");
}

Я сделал некоторые предварительные, но параметры не приходят на мой взгляд.Также я могу использовать стиль url django, например lists:getlistname?

здесь мой url.py:

urlpatterns = [
    ...
    path('getlistname/', views.getlistname, name='getlistname'),
]

мой views.py:

def getlistname(request, maschio=True, femmina=True, neutro=True,
                linguaggio='tutti', initial='0'):
    ...
    return HttpResponse('hi')

Так, что происходит?вызывается представление getlistname, но параметры не передаются (используется значение по умолчанию).

* Примечание: для использования Ajax я имею в виду что-то вроде этого:

    $.ajax({type: 'GET',
        url: '/lists/getnamelist/',
        data: {
            maschio: True,
            femmina: True
            ...
        },
        success: function () {
        ...
        }
    });

Редактировать:наконец я использовал $ .ajax (), потому что для того, что я прочитал, он менее эффективен, но чище

1 Ответ

1 голос
/ 25 сентября 2019

Вам нужна работа на стороне сервера, метод или класс внутри представлений.Это зависит от вашей модели базы данных.После этого вы можете получить результаты, используя javascript, но только на основе js вы не сможете получить доступ к базе данных.

в вашем случае только для сообщения «Привет», да, вы можете сделать это с помощью ajax.Дайте мне знать, если вам нужны данные из базы данных или просто строка.

Для базы данных: вы можете создать метод:

def data_get(request):
    if request.method == 'POST':
        data = dataModel.objects.all()
        # you can process data into mylist or another method to do that
    return return render(request, "yoururl.html", {'mylist' : mylist})

Затем вы можете получить эти данные в своем HTML.Вам нужно будет отправить форму для этого.

Конечно, есть много других способов.

...