У меня есть большой набор форм модели с начальными данными, который вводится с помощью ajax через отдельный визуализированный шаблон. Я также передаю токен csrf в шаблон. В инспекторе также видно, что скрытый ввод csrf выглядит точно так же, как и другие формы на той же странице. Однако, если я хочу отправить форму, я все равно получаю сообщение об ошибке csrf.
Таким образом, весь интерфейс работает, а маркер отображается в шаблоне, только я не могу отправить форму и не могуНе знаю, почему
Я уже пытался отрисовать форму без ввода и внедрить ввод через Ajax, но результат был таким же.
views.py, который вызывается запросом ajax POST
def render_revolver_table_form(request, product_id, production_step):
context = {}
context['csrfmiddlewaretoken'] = request.POST.dict()['csrfmiddlewaretoken']
template = 'products/product_details/setup_revolver_table.html'
SetupRevolverMapFormSet = modelformset_factory(SetupRevolverMap, exclude=(
'product', 'production_step', 'kanal', 'id'), form=SetupRevolverMapForm)
setup_revolver_maps = SetupRevolverMap.objects.filter(
product=product_id, production_step=production_step).all()
context['formset'] = SetupRevolverMapFormSet(
queryset=setup_revolver_maps.filter(kanal=1))
return render(request, template, context)
внедренный шаблон
<table class="table">
<thead class="thead-dark">
<tr>
<!-- Here is content from the formset -->
</tr>
</thead>
<form id="setup_revolver_form_kanal_1" action="" method="POST">
<input type="hidden" name="csrfmiddlewaretoken" value={{csrfmiddlewaretoken}}" />
{{ formset.management_form }}
<tbody>
<!-- Here is content from the formset -->
</tbody>
</form>
</table>
ajax.js
csrftoken = $('input[name="csrfmiddlewaretoken"]').val()
$.ajax({
url: 'ajax',
type: 'POST',
data: {
csrfmiddlewaretoken: csrftoken
},
success: function (data) {
$('#setup_revolver').append(data))
}
});
template.html
<!-- other forms etc. -->
<div id="setup_revolver">