#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))