Как указать FilePond на медиафайлы Django - PullRequest
0 голосов
/ 15 февраля 2019

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

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

Ответы [ 2 ]

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

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

django-filepond

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

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

0 голосов
/ 15 февраля 2019

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

Просмотр документов Django о загрузке файлов Полагаю, вы извлекаете файлы в Django следующим образом:

request.FILES['filepond']

Если для поля установлено значение multiple

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

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

...