Получение информации из Jquery в представлениях Django
В скрипте jquery я получаю информацию из таблицы в переменную data в формате json:
<script>
var $table = $('#table')
var $button = $('#button')
$(function() {
$button.click(function () {
data = JSON.stringify($table.bootstrapTable('getData'))
$.ajax({
url: "{%url 'addCampaign'%}",
type: "POST",
data: {
'mails_inf': data,
'csrfmiddlewaretoken': '{{ csrf_token }}',
}
})
})
})
</script>
А в функции с представлениями я пытаюсь получить этот список для дальнейшей обработки следующим образом:
def add_campaign(request):
error = ''
if request.method == 'POST':
data = request.POST.get('mails_inf')
print(data)
Но переменная data оказывается None, при оповещении этой переменной в самом скрипте, вся информация есть. Моя вкладка, на которой все это происходит, работает с таким url:
path('addCampaign', views.add_campaign, name='addCampaign')
Буду благодарен, если вы подскажете мне, где я ошибаюсь, или предложите другое решение проблемы
Проблема в том, что когда вы отправляете данные через Jquery, данные не будут находиться в request.POST
, но они будут находиться в необработанном request.body
при условии, что ваша форма правильная (name
передается на вход, содержащий ваши данные). Как указано в docs:
HttpRequest.body
.Необработанное тело HTTP-запроса в виде байтовой строки. Это полезно для обработки данных в формах, отличных от обычных HTML: бинарные изображения, полезная нагрузка XML и т.д. Для обработки обычных данных формы используйте HttpRequest.POST.
import json
def add_campaign(request):
error = ''
if request.method == 'POST':
data = json.loads(request.body)['mails_inf']
# data = request.POST.get('mails_inf')
print(data)
Если это не поможет, возможно, вы можете добавить форму в свой шаблон, чтобы посмотреть, есть ли проблема в ней.