Как заставить POST работать с Django AJAX? - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю форму с динамическими полями для построителя викторины, которую я инициализирую в теле следующим образом:

<form class="form-signin" action="{% url 'main:link' %}" id="qForm">
{% csrf_token %}
<div class="div1" style="width: 50%; margin: auto">
    <button class="add_form_field">Add Question &nbsp; 
      <span style="font-size:16px; font-weight:bold;">+ </span>
    </button>

</div>
<div style="width:50%;margin: auto; padding-top:15px ">
    <input class="btn btn-primary" type="submit" value="Submit">
    <a href="/link/home" id="cancel" name="cancel" class="btn btn-secondary">Cancel</a>
</div>
</form>

Мне нужно это POST. Это то, что у меня есть, но я не смог заставить его опубликовать успешно. Внутренний цикл создает объект типа «полезная нагрузка» с данными формы. Я еще не вставил его, потому что даже не могу получить фиктивный код полезной нагрузки для успешной отправки.

$( "#qForm" ).submit(function( event ) {
    $('#q2 input').each(function () {
     ....do stuff
   });

var $form = $( this ),
path = $form.attr( "action" );

payload = {"tKey":"test"};
var posting = $.ajax({
  url: path,
  method: "POST",
  headers: {'X-CSRFToken': '{{ csrf_token }}'},
  data: payload,
  dataType: "application-json",
});
console.log(payload);

posting.done(function() {
  console.log("posted");
});

posting.fail(function() {
console.log( "error" );
});

Полезная нагрузка будет распечатана на консоль, но возникает ошибка. Это views.py:

def maker(request):

    if request.method == 'GET':
        return render(request, 'link.html')
    elif request.method == 'POST':
        data = json.loads(request.body)
        payl = request.POST.get('payload')
        payl.save()
        return render(request, 'link.html')

Есть идеи, как заставить это работать? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...