Как указать FilePond на медиафайлы Django

Я использую FilePond.js, чтобы позволить пользователям перетаскивать изображения на веб-сайт. Я пытаюсь настроить FilePond для получения пользовательских фотографий. По-видимому, я хотел бы добавить в ссылку для СМИ, куда я хочу, чтобы фотография была загружена. Вот так:

 <script>
    FilePond.registerPlugin(FilePondPluginImagePreview);
    const inputElement = document.querySelector('input[type="file"]');
    const pond = FilePond.create(inputElement);

    FilePond.setOptions({
      server: "#" *** I have tried everthing possible as a server option, nothing works***
    });
</script>


def add(request):
if request.method == "POST":
    product_title = request.POST.get("product_title")
    product_price = request.POST.get("product_price")
    product_description = request.POST.get("product_description")
    product_images = request.FILES.getlist('filepond')
    request.user.product_set.create(product_title = product_title,product_price =product_price, product_description = product_description, product_images = product_images)
return render(request,"main/add.html")


class product(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE)
  product_title =  models.CharField(max_length=100, blank=True)
  product_price =  models.CharField(max_length=30, blank=True)
  product_description =  models.CharField(max_length=1000, blank=True)
  product_images = models.FileField()

Но я не могу заставить FilePond загружать изображения в URL-адрес Django. У меня вопрос: как мне указать FilePond для загрузки на URL, где предполагается хранить мою фотографию? Единственный способ, которым я знаю, как собирать изображения из пользовательского ввода, - это запрос get. Также я могу просто использовать запрос на получение, чтобы просто получить отправленные пользователями изображения FilePond и загрузить их в базу данных таким образом?

PS Я пытаюсь указать FilePond, чтобы загрузить его на URL-адрес носителя на моем сервере разработки. Который является http://www.example.local:8000/media

1 ответ

Решение

Обработка скриптов на сервере /media должен принимать запросы POST из поля с именем filepond, См. Документацию FilePond о том, как настроить имя поля.

Глядя на документы Django по загрузке файлов, я думаю, что именно так вы и получаете файлы в Django:

request.FILES['filepond']

Если поле установлено в multiple

files = request.FILES.getlist('filepond')

Поэтому, если вы соответствующим образом скорректируете свой сценарий Django, вы должны увидеть, как объекты файлов появляются в бэкэнде.

Я написал небольшое вспомогательное приложение для Django:

Джанго-filepond

Он позволяет вам указать приложение, для которого была произведена загрузка, через путь загрузки, и вы можете написать собственный обработчик загрузки, который затем сопоставит загруженный файл с нужной моделью.

Это на ранней стадии, но, возможно, это поможет.

Другие вопросы по тегам