Код на питон не работает, я продолжаю получать на страничке этот текст:
File Upload
File Upload
Upload
Код app.py:
from flask import Flask, render_template, request
import os
app = Flask(__name__)
# Путь к папке, где будут храниться загруженные файлы
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# Функция для загрузки файлов
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file:
# Сохраняем файл в папку uploads на сервере
filename = file.filename
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
# Функция для удаления файлов
def delete_file(filename):
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
if os.path.exists(file_path):
os.remove(file_path)
# Основная страница приложения
@app.route('/')
def index():
# Список файлов в папке uploads
files = os.listdir(app.config['UPLOAD_FOLDER'])
return render_template('index.html', files=files)
# Страница для загрузки файлов
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
upload_file()
return "Файл загружен"
else:
return render_template('upload.html')
# Страница для удаления файлов
@app.route('/delete', methods=['POST'])
def delete():
filename = request.form.get('filename')
if filename:
delete_file(filename)
return "Файл удален"
else:
return "Ошибка: не выбран файл для удаления"
if __name__ == '__main__':
app.run(port=8080, debug=True) файл index.html:
Загрузка файлов
Список файлов:
{% for filename in files %}
{{ filename }}
{% endfor %}
Выберите файл для удаления:
{% for filename in files %}
{{ filename }}
{% endfor %}
Удалить
Загрузить новый файл
файл upload.html:
Загрузка файла
Загрузка файла
Загрузить
На главную
Файлы app.py и upload.html, а также папки upload и templates назодятся в папке site. Папка uploads пуста, а в папке templates находится файл index.html, что делать, почему не работает?
Answers & Comments
Ответ:
Может надо скобко не такие ' а такие "
Verified answer
Проблема может быть связана с тем, что вы не указали метод для функции upload_file(). Вы можете добавить декоратор метода к этой функции, чтобы указать, что она должна быть вызвана только при отправке POST-запроса:python
Copy code
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
upload_file() # вызываем функцию только при отправке POST-запроса
return "Файл загружен"
else:
return render_template('upload.html')
Также, чтобы отобразить список загруженных файлов на главной странице, вам необходимо создать папку "uploads" в корневой директории проекта, если её ещё нет.
Также, убедитесь, что вы запустили приложение, используя команду flask run в терминале, находясь в корневой директории проекта, а не просто запустив скрипт app.py.