Python Flask — webbrowser не работает должным образом

#python #python-2.7 #flask #pythonanywhere

#python #python-2.7 #flask #pythonanywhere

Вопрос:

Я написал небольшое приложение Flask, которое работает на pythonanywhere.com Сервер. Если я тестирую свое приложение локально, все работает нормально, но когда я делаю это на сервере pythonanywhere, моя функция webbrowser не работает. Небольшое пояснение, что делает этот сайт: у меня есть одна вкладка, где пользователь может загружать файлы на сервер. Файлы сохраняются в отдельной папке. Затем в моем приложении есть еще одна вкладка, где вы можете увидеть все файлы в этой папке (os.listdir) и поле ввода, в которое вы можете ввести имя файла, и когда вы нажмете отправить, он автоматически загрузит его на ваш компьютер.

Небольшая форма для загрузки

Код для моей вкладки загрузки, обзор файлов и последнее, но не менее важное, сам загрузчик:

 @app.route('/upload.html',methods = ['GET','POST'])
@login_required
def upload():
    if request.method =='POST':
        file = request.files['file']
        if file:
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
            flash("File uploaded succesfully: ")
            flash(filename)
    return render_template('upload.html')

@app.route('/uploads.html', methods= ['GET', 'POST'])
@login_required
def uploads():
    flash(os.listdir('/Users/julian/pyytest'))
    if request.method == 'POST':
        vdatei = request.form['datei']
        if request.form['datei'] == '':
            flash('Feld darf nicht leer sein')
        else:
            webbrowser.open("http://localhost:5000/uploads/%s"
                            % vdatei)

    return render_template('uploads.html')



@app.route('/uploads/<filename>')
@login_required
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)
  

Резюме: Локально все работает нормально, и когда я развертываю свое приложение на pythonanywhere webbrowser.open() не открывает сайт для загрузки файла на мой сервер.
Я надеюсь, что кто-нибудь сможет мне помочь.

Комментарии:

1. Я бы предположил, что порт 5000 может быть закрыт на их сервере

2. Есть ли обходной путь?

3. На самом деле, вы уверены, что URL должен быть localhost ? На самом деле я даже не уверен, что webbrowser.open может работать должным образом, если вызывается с удаленного компьютера. Перенаправление было бы более логичным подходом, IMO (в большей степени в соответствии с веб-практикой). Это также должно устранить потенциальную проблему с портом.

4. Да, URL-адрес localhost, потому что это мой локальный скрипт. Очевидно, что при развертывании моего приложения в pythonanywhere будет другая ссылка.

5. ах да, извините, я тут немного запутался, теперь я нашел правильные документы для url_for — ваш последний код почти правильный. return redirect(url_for("uploaded_file", filename=vdatei))