Le but de cette application est de remplir un formulaire, d'analyser les données du formulaire, de lancer une construction, de compresser et d'envoyer cette construction à l'utilisateur.Comment rendre un modèle et envoyer un fichier simultanément avec un flacon
Tout fonctionne bien, mais je veux qu'une fois le formulaire rempli, l'utilisateur est redirigé vers une page en attente, si cela est possible bien sûr.
Ceci est mon code au moment:
def create_and_download_build(form)
# Some parsing in the beginning of the function, the build etc...
os.system('tar -zcvf build.tar.gz dist/')
headers = {"Content-Disposition": "attachment; filename=build.tar.gz"}
with open('build.tar.gz', 'r+b') as data_file:
data = data_file.read()
response = make_response(render_template('waiting.html'), (data, headers))
return response
C'est là cette fonction est déclarée, dans mon _init__.py:
@app.route('/', methods=('GET', 'POST'))
def index():
form = MyForm() # MyForm is a class in which there is some
# wtform field (for example TextField)
if form.validate_on_submit(): # This is called once the form is validated
return create_and_download_build(request.form)
return render_template('index.html', form=form)
Il ne fonctionne pas, je reçois cette erreur pour la ligne dans laquelle j'appelle make_response
: AttributeError: 'tuple' object has no attribute 'decode'
Si je change make_response
à: response = make_response((data, headers))
, il chargera correctement le fichier, mais il ne rendra pas la page waiting.html.
Même si je le change en: response = make_response(render_template('waiting.html'))
, le modèle sera rendu, mais le fichier ne sera pas téléchargé.
Existe-t-il une méthode pour effectuer ces deux actions?