2015-10-30 17 views
5

Tôi muốn đặt một nút trên trang web được tạo bình và cho phép người dùng tải xuống trang html dưới dạng tệp khi người dùng nhấp vào nút. Những gì tôi tưởng tượng là một cái gì đó giống như lưu html rendered vào BytesIO và gửi nó qua send_file, nhưng tôi không thể tìm thấy cách lưu trang được hiển thị vào đối tượng tệp. Làm thế nào tôi có thể làm điều đó?Tải xuống trang html do bình tạo ra

+0

Bạn có nghĩa là như ctrl-s hoặc nhấp chuột phải> lưu trang dưới dạng? Tại sao không chỉ để họ làm điều đó? Điều đó thậm chí có thể chăm sóc hình ảnh và các tài nguyên được liên kết khác. – davidism

+0

Cảm ơn bạn đã bình luận! Có một vài lý do; trước hết, trang web này là dành cho những người không am hiểu công nghệ cao, vì vậy tôi không mong đợi họ biết mẹo đó; thứ hai, tôi muốn cung cấp cho họ gần như giống nhau nhưng không chính xác cùng một trang web; cuối cùng, tôi không đặc biệt tin rằng các trình duyệt thực hiện công việc lưu một trang web một cách rất tốt, bởi vì tôi đã trải qua một vài thất bại cá nhân. Bằng cách này, trang web này là về tạo ra dữ liệu khoa học để nội dung và đối tượng mục tiêu là một chút khác nhau từ một trang web thông thường. –

Trả lời

4

Bạn có thể thử một cái gì đó như thế này:

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) 

Nó không phải là thử nghiệm nhưng phải cung cấp cho bạn một ý tưởng.

+0

Cảm ơn bạn rất nhiều! Tôi không mong đợi '' 'render_template''' trả về toàn bộ trang html trong một chuỗi, tôi nghĩ nó sẽ làm nhiều hơn đằng sau cảnh vì tài liệu API không nói gì về giá trị trả về của nó, hoặc có thể Tôi chỉ bỏ lỡ nó. Điều này giải quyết vấn đề. –

Các vấn đề liên quan