Использовать сценарий ответа Ajax в Django HttpResponse - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь передать ответ ajax, полученный от view, на template, используя HttpResponse, но у меня нет никакой идеи, как это сделать?

view.py

 analyzer=SentimentIntensityAnalyzer()
    def index(request):
        return render(request, "gui/index.html")

    @csrf_exempt
    def output(request):
        sentences = request.POST.get('name',None)
        senti = analyzer.polarity_scores(sentences)
        context_dict = {'sentiment': senti}
        return render(request,"gui/index.html", context = context_dict

Я хочу, чтобы senti печатался после партитуры на странице, но я не могу ее получить.

файл шаблона

<!doctype html>
<html>
     <head>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
       </script>
     </head>
     <body>
       <form action = Post>
                    Enter Sentence:<input id = "name" type = "text" name = "EnterSentence" encoding = "utf-8"><br>
         <input onclick = "testfunction()" type = "button" value = "Submit" >
        </form>
        <div><strong>Score is {{ sentiment }}</strong></div>
    </body>
    <script>
    var testfunction = () => {
    var test = document.getElementById("name").value
    console.log(test)

    $.ajax({
             type: "POST",
             dataType: "json",
             url: 'output/',
             data:{
                    csrfmiddlewaretoken: '{{ csrf_token }}',
                   'name': test
                    },
                    success: function(response) {
                    console.log("Succesful return firm ajax call");
                    },
                    error: function(result){
                    console.log("Failure");
                    }
             });

    }
    </script>
</html>

enter image description here

1 Ответ

0 голосов
/ 12 октября 2018

В вашем view.py return render(request,"gui/index.html", context = context_dict код отсутствует окончание парантез .


Это правильный порядок jQuery ajax:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

Ваши поля success и error находятся внутри data.


<script>
    $(document).ready(function(){
        $("button").click(function(){
            $.ajax({url: "demo_test.txt", success: function(result){
                $("#div1").html(result);
            }});
        });
    });
    </script>
    </head>
    <body>

    <div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div>

    <button>Get External Content</button>

    </body>

Это пример использования .html метода ajax jquery,Вы можете настроить его самостоятельно.


Кроме того, используйте приведенный ниже код для циклического перебора response:

  $.each( data, function( key, val ) {
    HTMLString += <li id='" + key + "'>" + val + "</li>
  });

, и это должно быть внутри функции успеха, а затем передатьHTMLString в .html метод

Чтобы было понятнее, как $.each работает:

var numbers = [1, 2, 3, 4, 5, 6];
$.each(numbers , function (index, value){
  console.log(index + ':' + value); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...