Несколько flask_dropzone на одной странице

Я новый разработчик.

У меня есть форма с несколькими шагами, и я хочу разрешить пользователям загружать максимум 2 (например, DROPZONE_MAX_FILE_SIZE = 3, PLOADED_PATH = os.path.join (base, 'doc Form'))

затем в другом разделе (шаге) формы я хочу разрешить пользователю загружать больше файлов с другой конфигурацией (например, DROPZONE_MAX_FILE_SIZE = 20, PLOADED_PATH = os.path.join (base, 'med'))

Вещи, которые я пробовал:

1 - дважды пытался вставить dropzone в одни и те же формы в два разных Div и предоставил настраиваемые параметры для каждого, включая другой URL-маршрут, но не работал (работает только при удалении одного из них) Я всегда получаю ошибку SECOND_PATH_URL_OR_FUNCTION is not defined

2 - после прочтения этого ответа Несколько Dropzone на одной странице я заменил div на форму и добавил настраиваемые параметры, где каждая dropzone имеет свою собственную функцию в колбе

Если я удалил DROPZONE_UPLOAD_ACTION='handle_upload' из конфигурации приложения и добавил в качестве настраиваемого параметра, я получаю эту ошибку на консоли Chrome No URL provided..

Когда я добавляю один из URL-адресов, он единственный, у которого есть шанс работать, потому что я получаю ошибку для второго handle_upload2 is not defined, где handle_upload2 - это просто дубликат исходной функции, которая называется handle_upload, которую я добавил ее URL-адрес в параметры конфигурации.

Кажется, что custom_options не отменяет детали app.config

Я близок, но я не знаю, как добавить оба URL-адреса на одну страницу, чтобы я мог запустить один функциональный скрипт onclick и отправить все данные в Ajax, как если бы они были одной формой.

Параметры конфигурации текущего приложения в файле flask:

UPLOADED_PATH=os.path.join(basedir, 'uploads'),
# Flask-Dropzone config:
DROPZONE_ALLOWED_FILE_TYPE='image',
DROPZONE_MAX_FILE_SIZE=3,
DROPZONE_MAX_FILES=30,
DROPZONE_IN_FORM=True,
DROPZONE_UPLOAD_ON_CLICK=True,
DROPZONE_UPLOAD_ACTION='handle_upload',  # URL or endpoint
DROPZONE_UPLOAD_BTN_ID='uploadID',

пользовательские параметры для Drop Zone 1:

    {{ dropzone.config(custom_init='dz = this;document.getElementById("uploadID").addEventListener("click", function handler(e) {dz.processQueue();});',
                 custom_options='autoProcessQueue: false, addRemoveLinks: true, maxFiles: 2,DROPZONE_UPLOAD_ACTION:handle_upload,') }}

и для зоны сброса 2:

{{ dropzone.config(custom_init='dz2 = this;document.getElementById("uploadID").addEventListener("click", function handler(e) {dz2.processQueue();});',
                     custom_options='autoProcessQueue: false, addRemoveLinks: true, maxFiles: 2,DROPZONE_UPLOAD_ACTION:handle_upload2,') }}

Пожалуйста, прочтите При каких обстоятельствах я могу добавить к моему вопросу «срочно» или другие похожие фразы, чтобы получить более быстрые ответы? - вкратце, это не идеальный способ обращения к волонтерам и, вероятно, контрпродуктивно для получения ответов. Пожалуйста, воздержитесь от добавления этого к своим вопросам.

halfer 14.11.2018 21:11

я запомню это

LoopingDev 15.11.2018 00:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
817
1

Ответы 1

В документации Flask-drop-zone говорится: Возможно, вы захотите использовать другую конфигурацию для нескольких областей перетаскивания на разных страницах, в этом случае вы можете напрямую передать определенные аргументы ключевого слова в dropzone.config().

Аргументы ключевого слова должны отображать соответствующую переменную пожара следующим образом:

DROPZONE_DEFAULT_MESSAGE -> default_message DROPZONE_TIMEOUT -> тайм-аут DROPZONE_ALLOWED_FILE_TYPE -> допустимый_тип_файла и т.д пример:

{{ dropzone.config(max_files=10, timeout=10000, default_message='Drop here!') }}

Переданный вами аргумент ключевого слова перезапишет соответствующие конфигурации.


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

но вы можете отправить два URL-адреса для разных дроп-зон на одной странице:

{{ dropzone.create(action= url_for('product.first_upload')) }}
{{ dropzone.create(action= url_for('product.second_upload')) }}

@product.route('/first_upload', methods=['POST'])
def first_upload():
    #do something

@product.route('/second_upload', methods=['POST'])
def second_upload():
    #do something

Кроме того, вы можете отправить аргумент функции загрузки, чтобы различать зоны сброса:

@product.route('/upload_images/<string:upload_for><int:id>', methods=['POST'])
def upload_images(upload_for, id):
    if upload_for == "Something like Cat Image":
        #do something with id passed

Большое спасибо, знаете, 2 дня назад я сбросил flask-dropzone и заменил его на dropzon.js. это сложнее, но я могу сделать столько конфигураций, сколько захочу.

LoopingDev 19.11.2018 20:24

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