"Tôi rất thích để có thể tạo các báo cáo ... mà không cần phải viết mã các báo cáo"
Vì vậy, sẽ I. Đáng buồn thay, tuy nhiên, mỗi báo cáo có vẻ là duy nhất và yêu cầu mã tùy chỉnh.
Từ mô hình Django sang CSV thật dễ dàng. Bắt đầu với một vài báo cáo của bạn.
import csv
from myApp.models import This, That, TheOther
def parseCommandLine():
# setup optparse to get report query parameters
def main():
wtr= csv.DictWriter(sys.stdout, ["Col1", "Col2", "Col3"])
this, that = parseCommandLine()
thisList= This.objects.filter(name=this, that__name=that)
for object in thisList:
write.writerow(object.col1, object.that.col2, object.theOther.col3)
if __name__ == "__main__":
main()
HTML khá dễ - Django có ngôn ngữ mẫu HTML. Thay vì render_to_response, bạn chỉ cần hiển thị mẫu của bạn và viết nó thành stdout. Và cốt lõi của thuật toán, thú vị, rất giống với việc viết một CSV. Tương tự đủ - mà không có nhiều thông minh - bạn nên có một mẫu thiết kế mà cả hai.
Khi bạn có CSV hoạt động, hãy thêm HTML bằng các mẫu của Django.
PDF khó hơn, vì bạn phải thực sự tìm ra định dạng chi tiết. Có rất nhiều thư viện Python cho việc này. Thật thú vị, tuy nhiên, mô hình tổng thể cho việc viết PDF rất giống với CSV và HTML.
Gửi email có nghĩa là sử dụng gói trực tiếp smtplib của Python hoặc gói email của Django. Đây không phải là quá khó. Tất cả các phần đều có, bạn chỉ cần gửi email các tệp đầu ra được tạo ra ở trên cho một số danh sách phân phối.
Lập lịch cần suy nghĩ một chút để tận dụng tối đa crontab
. Điều này - có lẽ - là phần khó nhất của công việc.
Nhận xét rất quan trọng: XHML2PDF/Pisa được cấp phép theo GPL – sorin
Giấy phép thương mại hiện tại là 500 EUR. – sorin
Cảm ơn câu trả lời của bạn Sorin –