Как использовать param из HTTP-запроса для добавления модели в Django - PullRequest
1 голос
/ 05 марта 2019

Я новичок в Django и о том, как он взаимодействует с некоторыми из его внутренних компонентов, поэтому заранее прошу прощения, если это очевидно.Я работаю с html canvas и конкретной библиотекой javascript (fabric.js), чтобы можно было преобразовать canvas в объект json.Я хочу использовать ajax-запрос для отправки этого объекта json, чтобы я мог прикрепить его к модели в моей БД.Как бы я поступил так.

Вот Javascript:

function postData(input) {
            $.ajax({
                type: "POST",
                url: window.location.href,
                data: { json: input },
                success: callbackFunc
            });
        }
let canvasBefore = JSON.stringify(canvas);
postData(canvasBefore);

Я предполагаю, что есть встроенный метод для django, чтобы обрабатывать подобные запросы.Спасибо вам за помощь.Николай

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Ну, я думаю, что лучше всего использовать Django Rest Framework , с этой библиотекой вы можете создавать мощные API, процесс будет выглядеть примерно так:

  1. Создать Модель
  2. Создание ModelSerializer (необходим DRF)
  3. Создание представления для обработки запроса. В этом случае вы можете использовать класс CreateApiView . (Необходим DRF)
  4. Создайте конечную точку
  5. Используйте это

Есть много способов создать решение вашей проблемы, это только один из них. Я надеюсь, что это поможет вам.

0 голосов
/ 05 марта 2019

Если canvas является фактическим <canvas> элементом, вы не можете просто JSON.stringify() его ожидать и ожидать сохранения изображения:

>>> c = document.createElement('canvas')
    <canvas>​
>>> JSON.stringify(c)
    "{}"

Вместо этого вы можете использовать canvas.toDataURL() чтобы получить data: URL , который кодирует содержимое холста в формате PNG в кодировке Base64:

>>> x = c.toDataURL()
    "data:image/png;base64,iVBORw0KGgoAAA..."

Это простая строка, которую можно сохранить в модели Django, илиеще лучше, декодировать обратно в двоичный PNG в коде на стороне сервера и сохранить как файл, используя FileField или даже ImageField.

...