#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')
Пожалуйста, сообщите мне, что я делаю неправильно. также дайте мне знать, требуется ли еще какой-либо ввод. Заранее спасибо.
Комментарии:
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)