Рендеринг, не работающий даже через команду, виден в журнале CMD

#django #ajax #post #request #rendering

#django #ajax #Публикация #запрос #рендеринг

Вопрос:

Я новичок в django, пытаюсь использовать AJAX для перемещения данных из html в views.py через AJAX происходит что-то странное, данные перемещаются, но страница не меняется, новая страница не отображается.

HTML-КОД

     <div class="bodyclass">
    {% csrf_token %}
    {% for account in accounts %}
    <div class="">
        <div class="accountname">
            <button onclick="submitform('{{ account}}')" class="btn btn-info accbtn " id="{{ account }}">{{account}}</button>
        </div>
    </div>
    {% endfor %}
</div
 

JS-код

     <script>
    function submitform(accname){
        alert(accname);
        var csrf = document.getElementsByName('csrfmiddlewaretoken');
        $.ajax({
            type : 'POST',
            url : 'accounts',
            data:{
                csrfmiddlewaretoken : csrf[0].value,
                'accname': accname,
            },
        });

        alert('bye');
    }
</script>
 

views.py

 def accounts(request):
    if request.user.is_authenticated:        
        if request.method == 'GET':
            if request.user.is_superuser:
                account = AccountDescription.objects.all()
            else:
                account = UserAccount.objects.filter(user=request.user)
            return render(request, 'accounts.html',{'accounts':account})
        elif request.method == "POST":
            print(request.POST)
            print(request.POST.get('accname'))
            return HttpResponseRedirect('/clientinfo')
    else:
        return HttpResponseRedirect('/login')
 

также скриншот cmd
введите описание изображения здесь

Пожалуйста, сообщите мне, что я делаю неправильно. также дайте мне знать, требуется ли еще какой-либо ввод. Заранее спасибо.

Комментарии:

1. Вы отправляете AJAX-запрос, но после этого больше ничего не делаете. В частности, вы не читаете его ответ. Как вы ожидаете, что страница отобразит ответ?

2. @soxwithMonica Я перенаправляю его в «/ clientinfo», как видно в журнале cmd, для этого есть запрос get. Я использовал render (запрос, ‘clientinfo.html ‘), а также получить то же самое.

3. нет, django возвращает ответ перенаправления, который браузер автоматически выполняет (как вы видите в журнале django). Это не меняет того, что я сказал ранее, вы отправляете AJAX-запрос и даже не читаете ответ (фактический, после перенаправления). Где находится обработчик onsuccess() ответа AJAX?

4. ОК. Я понял. Я должен перенаправить на другой через JavaScript из ответа onsuccess (). Спасибо.

Ответ №1:

Чтение вывода возврата ajax в файле JS

JS-код

 $.ajax(
            {
            type:"POST",
            url: "/checkonline",
            data:{
                    //Pass CSRF amp; Data
            },
            success: function(data)
            {
                //Read Response Here
                //redirect user to here using javascript 
                 alert(data);
            }
        })
 

views.py

 //Example for Return Response in JSON Format

from django.http import JsonResponse

def accounts(request):
    return JsonResponse(list({"redirect_user"}) , safe=False)