Я создаю форму с динамическими полями для построителя викторины, которую я инициализирую в теле следующим образом:
<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
<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')
Есть идеи, как заставить это работать? Спасибо!