Как указать 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:
Он позволяет вам указать приложение, для которого была произведена загрузка, через путь загрузки, и вы можете написать собственный обработчик загрузки, который затем сопоставит загруженный файл с нужной моделью.
Это на ранней стадии, но, возможно, это поможет.