Как исправить метод 405, не разрешенный в формах, используя Blueprint в Flask - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть форма загрузки файла в HTML, которую нужно использовать для загрузки и сохранения в статическую папку.Проблема в том, что он отлично работает в простом приложении Flask, но просто не работает с шаблонами Blueprint .

. Я пробовал несколько разных способов сделать эту работу.Когда я использую « url_for », страница даже не загружается ( werkzeug.routing.BuildError: Не удалось создать URL для конечной точки «upload». Вы имели в виду «forms_blueprint.upload» вместо этого?).

Но когда я изменяю "url_for" на " form_upload.html ", всегда получается, что метод не разрешен .

Все мысли приветствуются.

rout.py:

UPLOAD_FOLDER = '/home/juliosouto/flask-gentelella/app/uploaded_files/'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER


@blueprint.route('/<template>', methods = ['GET', 'POST'])
@login_required
def route_template(template):
    return render_template('form_upload' + '.html')


@blueprint.route('/upload', methods=['POST','GET'])
def upload():
    file = request.files['file']
    filename = secure_filename(file.filename)
    file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

form_upload.html:

<form action ="{{ url_for('upload') }}" class= "dropzone" name="file" method = "POST" enctype = "multipart/form-data"></form>

Мне нужен файл для сохранения встатическая папка.

1 Ответ

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

Когда я использую «url_for», страница даже не загружается (werkzeug.routing.BuildError: Не удалось создать URL для конечной точки «upload». Вы вместо этого имели в виду «forms_blueprint.upload»?).

Это означает именно то, что говорится.когда вы создаете URL, вам нужно сделать это следующим образом:

{{ url_for('forms_blueprint.upload') }}

Кроме того, как правильно говорит @gittert, ваш маршрут загрузки ничего не возвращает.

Это должно сделать шаблонили вернуть перенаправление в другое место.

...