Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24

Как извлечь данные из Multipart/form-data?

26.10.2021, 16:33. Показов 4744. Ответов 19

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подключил я значит Free Kassa но не как не пойму как извлечь данные из form-data.

Вот что пишут Free Kassa в документации:
После успешной оплаты, на Ваш URL оповещения будут отправлены следующие данные (в формате form-data)
Там есть параметр AMOUNT (Сумма платежа) я пробовал сделать так:

Python
1
2
def payment_alerts(request):
    amount = request.GET['AMOUNT']
но данные из параметра AMOUNT не присваиваются в переменную amount для дальнейшего сохранения этих значений в БД.

В поддержке Free Kassa написали что для Python нужно использовать библиотеку requests, чтобы извлечь данные из form-data. Но какие нужны методы функции и как это вообще происходит я нигде не нашел. Нужно просто извлечь чертов параметр AMOUNT и присвоить его в переменную пусть даже с костылями но очень нужно сделать это любыми способами. Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2021, 16:33
Ответы с готовыми решениями:

Как отправлять multipart/form-data Post?
Всем привет! есть гос сайт там есть раздел технической поддержки надоело им лазить на сайт решил написать утилиту! Вроде все сделал...

Curl --header 'Content-Type: multipart/form-data' -X POST --form filename=@lib.dll
Здравствуйте коллеги! Хорошего дня! Windows 10 CMD curl --header 'Content-Type: multipart/form-data' -X POST --form...

Как загрузить видео используя multipart/form-data и axios
Я пытаюсь реализовать загрузку видео, используя multipart/form-data и axios. Но при попытке загрузить разделенный видеофайл на чанки...

19
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
26.10.2021, 17:55
darknetofficial, уверены что это GET?
1
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
26.10.2021, 18:11  [ТС]
Здравствуйте. Вообще не уверен что творю. Free Kassa отправляет form-data с методом GET на этот адрес: https://tik-rec.ru/payment/alerts/ у меня его обрабатывает следующая функция
Python
1
2
3
4
5
6
def payment_alerts(request):
    amount = requests.get(url='https://tik-rec.ru/payment/alerts/', data='AMOUNT')
    current_user = UserProfile.objects.get(pk=request.user.id)
    current_user.balance = current_user.balance + amount
    current_user.save()
    return render(request, 'main/payment/alerts.html')
Нужно как то получить параметр AMOUNT из отправленной form-data. Как сделать без понятия(

Добавлено через 1 минуту
Импортировал библиотеку requests, по совету поддержки Кассы но они сами почти не шарят в пайтоне и Django и я не знаю что делать

Добавлено через 1 минуту
Также в Кассе есть возможность поменять метод на POST но в любом случае что POST что GET а как получить этот параметр я без понятие(
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
26.10.2021, 19:11
darknetofficial, ну, скорее всего, нужно прописать в маршрутах urlpatterns тот, куда эта касса будет слать ответ и уже потом только получать
Python
1
amount = request.GET.get("AMOUNT")
С другой стороны непонятно, если эта функция payment_alerts обрабатывает, то зачем она шлет?
Python
1
2
3
# неправильно параметры передаются
r = requests.get('https://tik-rec.ru/payment/alerts', params={'key':'value'})
t.text # тут должен быть ответ сервера, можно вывести посмотреть
1
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 11:46  [ТС]
В кассе в url оповещения я ввел ссылку в таком формате: https://tik-rec.ru/payment/alerts/
urls.py такой:
Python
1
2
3
4
5
6
7
8
urlpatterns = [
    .....
 
    # Payment
    path('payment/alerts/', payment_alerts, name='payment_alerts'),
    path('payment/success/', payment_success, name='payment_success'),
    path('payment/error/', payment_error, name='payment_error')
]
Шлет она потому-что я понятие не имел как ее получать)) Я новичок в Django, есть база знаний но с кассой работаю впервые и не знал как получать ответы от нее и уж тем более в каком-то form-data формате))

Я вас правильно понял, получается чтобы получить параметр AMOUNT мне нужно прописать функцию так?:

Python
1
2
3
def payment_alerts(request):
    r = requests.get('https://tik-rec.ru/payment/alerts', params={'key':'value'})
    amount = request.GET.get("AMOUNT")
а как данные полученные в переменную r помогут мне извлечь параметр AMOUNT? Зачем в таком случае мне нужен вот этот код: amount = request.GET.get("AMOUNT") а что то вообще не врубаюсь. А в key и value какие значения должны быть? Я же хочу получить значения данных AMOUNT а не присвоить их туда))) Расскажите пожалуйста)))
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
27.10.2021, 12:10
darknetofficial, если к ВАМ пришел GET-ответ от того сервера и по маршрутизации он вызывает payment_alerts, то тогда получить можно так amount = request.GET.get("AMOUNT").
Просто я не могу понять зачем в ней слать куда-то get requests.get('https://tik-rec.ru/payment/alerts', params={'key':'value'}), если ответ уже получен и находится в параметре request функции.

Кидаться сразу в кассу, не вникая в основы — такое себе. Посмотрите хотя бы тут https://python-scripts.com/requests
1
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 14:58  [ТС]
Спасибо за помощь.
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 16:41  [ТС]
Я извиняюсь, но я написал вот так:
Python
1
2
3
4
5
def payment_alerts(request):
    amount = request.GET.get("AMOUNT")
    current_user = UserProfile.objects.get(pk=request.user.id)
    current_user.balance = current_user.balance + amount
    current_user.save()
Но почему-то все-равно ничего не сработало.
Что я делаю не так, не как не пойму.

Вот все подробности:
Миниатюры
Как извлечь данные из Multipart/form-data?   Как извлечь данные из Multipart/form-data?   Как извлечь данные из Multipart/form-data?  

Как извлечь данные из Multipart/form-data?  
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
27.10.2021, 17:12
darknetofficial,
Неплохо бы проверить, входит ли в эту функцию приложение вообще. Например, вернуть любой шаблон.
если ответ от кассы приходит, значит вернется шаблон индекс.
Python
1
2
def payment_alerts(request):
    return render(request, 'index.html')
Потом поменять чтоб приходил POST и посмотреть что тут есть request.FILES
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 17:20  [ТС]
Прописал:
Python
1
2
def payment_alerts(request):
    return render(request, 'main/main.html')
Вызвался только шаблон success при успешной оплате а main.html нет

Python
1
2
def payment_success(request):
    return render(request, 'main/payment/success.html')
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
27.10.2021, 18:01
Цитата Сообщение от darknetofficial Посмотреть сообщение
Вызвался только шаблон success при успешной оплате а main.html нет
Тогда в отладчике поставьте точку останова после входа в функцию. И посмотрите что там приходит в requests


Почему не приходит ничего именно на уведомления я хз.
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 18:05  [ТС]
У меня сайт выгружен на сервер, как я могу проверить что приходит в request на боевом сервере? Использую beget
Миниатюры
Как извлечь данные из Multipart/form-data?  
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
27.10.2021, 18:18
darknetofficial, ну глянуть нужно только FILES,
Можно тупо, как вариант
Python
1
2
3
if "AMOUNT" in request.FILES:
    # если есть такой ключ,  то всё ок,
    # но в настройках кассы поставить POST
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 18:21  [ТС]
Хорошо, но что вписать в проверку если return не возращает шаблон?)))
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
27.10.2021, 18:54
Можно потупить и записать в файл. В противном случае сюда тупо ничего не приходит
Python
1
2
3
def payment_alerts(request):
    with open("FILES.txt", 'w') as file:
        file.write(';'.join(request.FILES))
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 18:55  [ТС]
Хорошо спасибо, сейчас попробую
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
27.10.2021, 18:59  [ТС]
Меня перекинуло на страницу с success как обычно. Значит проблема в том что ничего не приходит на сайт оповещения?
Миниатюры
Как извлечь данные из Multipart/form-data?  
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
28.10.2021, 10:05  [ТС]
Здравствуйте, в поддержке Free Kassa сказали что с отправкой запроса все окей и дело в моём обработчике платежей. Есть идеи что это может значить?
Миниатюры
Как извлечь данные из Multipart/form-data?  
0
0 / 0 / 1
Регистрация: 21.10.2021
Сообщений: 24
28.10.2021, 10:13  [ТС]
На php обработчик платежа выглядит следующим образом:
Миниатюры
Как извлечь данные из Multipart/form-data?  
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
28.10.2021, 13:30
Цитата Сообщение от darknetofficial Посмотреть сообщение
Есть идеи что это может значить?
судя по ответу, их серверу в доступе отказано) 403
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2021, 13:30
Помогаю со студенческими работами здесь

Как получить файл из multipart/form-data с использованием llhttp?
Привет! Есть проект парсера для Си llhttp.org. Подскажите, пожалуйста, как с его помощью выловить файл обратно, чтобы сохранить на диске...

Как прикрепить картинку в формате multipart/form-data в post запрос на Java?
Всем привет! У меня не стандартный вопрос. Нужно вот этот код с python перевести на java: requests.post(upload_url,...

multipart form data
Если готовая библиотека которая облегчает создание multipart/form data ??

Multipart/form-data vk api
vk api загрузка файлов на сервер (загрузка фото на стену) - ошибка Security Breach2 помогите разобраться... 1.0 запрос...

Multipart/form-data иероглифы
Отправляю аудио телеграм боту с кириллицей в filename. Аудио файл приходит, но уже с другим названием, пример - = utf-8 B 0jTQtdC20LDQstGO...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru