2015-10-30 12 views
5

Chcę umieścić przycisk na stronie internetowej generowanej przez kolbę i pozwolić użytkownikowi pobrać stronę HTML jako plik, gdy użytkownik kliknie przycisk. To, co sobie wyobrażam, to coś w rodzaju zapisywania renderowanego html w BytesIO i wysyłanie go przez send_file, ale nie mogę znaleźć sposobu zapisania renderowanej strony w obiekcie pliku. Jak mogę to zrobić?Pobieranie strony html generowanej przez kolbę

+0

Masz na myśli ctrl-s lub prawy przycisk myszy> zapisz stronę jako? Dlaczego po prostu nie pozwolić im tego zrobić? To może nawet zająć się zdjęciami i innymi powiązanymi zasobami. – davidism

+0

Dzięki za komentarz! Jest kilka powodów; Przede wszystkim ta strona jest przeznaczona dla osób, które nie znają się na technologiach, więc nie oczekuję, że znają tę sztuczkę; po drugie, chcę dać im prawie tę samą, ale nie dokładnie tę samą stronę; na koniec, nie uważam specjalnie, że przeglądarki wykonują zadanie zapisywania strony w bardzo dobry sposób, ponieważ osobiście doświadczyłem kilku błędów. Nawiasem mówiąc, ta strona internetowa ma na celu generowanie danych naukowych, aby treść i docelowi odbiorcy byli nieco różni się od zwykłej strony internetowej. –

Odpowiedz

4

można spróbować coś takiego:

import StringIO 
from flask import Flask, send_file, render_template 

def page_code(): 
    strIO = StringIO.StringIO() 
    strIO.write(render_template('hello.html', name='World')) 
    strIO.seek(0) 
    return send_file(strIO, 
        attachment_filename="testing.txt", 
        as_attachment=True) 

To nie jest badany, ale powinny dać pomysł.

+0

Dziękuję bardzo! Nie spodziewałem się, że '' 'render_template''' zwróci całą stronę html w ciągu znaków, myślałem, że będzie to robić więcej poza sceną, ponieważ dokument API nie mówi nic o jego wartości zwracanej, a może Po prostu tęskniłem. To rozwiązuje problem. –

Powiązane problemy