Как сохранить и обработать несколько файлов в Django
У меня есть функционирующий код на Django и он выполняет функцию сохранения
Как мне сделать так чтоб мой проект принимал и обрабатывал несколько файлов одновременно ?
views.py
def Upload(request):
if request.user.is_superuser == True:
if request.method == 'POST' and request.FILES['myfile']:
myfile = request.FILES['myfile']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
env = Env()
env.read_env()
gre = psycopg2.connect(
database=env.str('POSTGRES_DB'),
user=env.str('POSTGRES_USER'),
password=env.str('POSTGRES_PASSWORD'),
host=env.str('POSTGRES_HOST'),
port=env.str('POSTGRES_PORT')
)
cur_gre = gre.cursor()
conn = sqlite3.connect(str(f'media/{filename}'))
cursor = conn.cursor()
table_names = cursor.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
print(table_names)
table_name = []
for i in table_names:
table_name.append(i[0])
if 'main_whitelist' in table_name:
cursore = conn.execute(f"SELECT * FROM main_whitelist").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO "main_whitelist" (word) VALUES (%s)'''
date = (i[1],)
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
main.html
{% load static %}
{% block content %}
<style>
...
</style>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfile">
<button type="submit" class="button-9" role="button">Загрузить</button>
</form>
{% if uploaded_file_url %}
<p>File uploaded at: <a href="{{ uploaded_file_url }}">{{ uploaded_file_url }}</a></p>
{% endif %}
{% endblock %}
Используйте multiple="multiple" для вашего input. Это позволит выбирать несколько файлов.
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfile" multiple="multiple">
<button type="submit" class="button-9" role="button">Загрузить</button>
</form>
Во views.py в Upload получите их из request.FILES и работайте с ними как вам угодно.