0

私は数日間研究していますが、私はまだこれを理解できません!うまくいけば、仲間のStackOverflowerが私をここで助けることができます。Django管理コマンドからダウンロード可能なファイル

今、私はレポートを実行し、xlsxファイル(Excel)としてレポートを含む電子メールを送信するカスタムdjango管理コマンドを持っています。今、私はメールを受け取ってほしくない場合、人々がそれをダウンロードして自分自身のために見ることができるように、ウェブサイト上でレポートを得るための方法があるかどうか疑問に思っています。

私はすでに私のURLとHTMLテンプレートをセットアップしています。誰もがダウンロードできるように私のウェブサイトのテンプレートに私の管理コマンドから生成された私のレポートへのリンクを入れてください! !助けてください!私は立ち往生した! (凝縮)

管理コマンド

FILENAME = tempfile.mkstemp('.xlsx', 'EDIComplianceReport') 
class Command(BaseCommand): 
    def handle(self, *args, **options): 

    final_results[carrier_scac] = carrier_results 


    ts_util.sendMessage(['[email protected]'], 
         'EDI Compliance Report', '\n EDI Compliance Report Attached', 
         self.populateSpreadsheet(final_results)) 



    def populateSpreadsheet(self, results): 
      workbook = xlsxwriter.Workbook(STATICFILES_DIRS + 'ediportal/ComplianceSummaryReports/' + str(datetime.now().strftime('%Y%m%d%H%M%S'))) #appends a unique time at the end of the file to prevent overwrite 



      format01 = workbook.add_format({'border': 1, 'bold': True,'align': 'center', 'bg_color': '#DDDDDD'}) 
      format02 = workbook.add_format({'border': 1, 'bold': True, 'bg_color': '#9999FF', 'align': 'center'}) 
      format03 = workbook.add_format({'border': 1, 'bold': True, 'font_color': 'red', 'bg_color': 'white', 'align': 'center'}) 
      format04 = workbook.add_format({'border': 1, 'bold': True, 'bg_color': 'white', 'align': 'center'}) 

      worksheet = workbook.add_worksheet("Summary") 
      row = 0 
      col = 0 
      sorted_carriers = list(CARRIERS.keys()) 
      sorted_carriers.sort() 
      for i, carrier in enumerate(sorted_carriers): 
       worksheet.write(i+row, 0, carrier, format01) 
       worksheet.write(i+row, 1, 'Estimated Overall Compliance', format01) 
       worksheet.write(i+row+1, 1, results[carrier]['overall_compliance'], format03) 
       for ind, code in enumerate(CARRIERS[carrier].split(',')): 
        if code != 'overall_compliance': 
         worksheet.write(i+row, ind+2, code, format02) 
         worksheet.write(i+row+1, ind+2, results[carrier][code], format04) 
       row += 2 

      workbook.close() 
      return FILENAME[1] 

はこのように、私はEDIComplianceReport.xslxと呼ばれるファイルを提供し、他の人がHTMLテンプレートにリンクとしてダウンロードできるようにしたいです。

現在、私のローカルホストマシン上で実行されています! アイブ氏は、静的なフォルダにExcelブックを保存し、そこからそれをつかむのアイデアを持っていたが、私は正確なコードアウトちょうどカントの図は、

+0

のように見えますが、サーバー上で観測誤差とは何ですか? Apacheのerror_logsを確認してください。許可の問題がありますか? – cutteeth

+0

それは私はエラーの任意のタイプを取得していない。ただ、私のウェブサイトにダウンロード可能なファイルを最初に実装する方法はわかりません! –

+0

media_rootとmedia_urlを使用してダウンロードディレクトリを設定できます。 – cutteeth

答えて

1

設定であなたのMEDIA_ROOT設定し...私のテンプレートでドキュメントを埋め込みます。 py。あなたはMEDIA_ROOT=BASE_DIR+'/media'を試すことができます。その後、settings.pyのメディアURLをMEDIA_URL='/media/'としてください。テンプレートでは、ダウンロードURLにsrc="{{MEDIA_URL}}/<DATE STRING HERE>"check Django docs on media files hereと静的ファイル hereと記述できます。ファイルのアップロードを処理するために、アプリケーションのmodels.pyにモデルを設定する方が良いでしょう。典型的なモデルは以下のようになります。

class ExcelUploads(models.Model): 
    excel_file = models.FileField(upload_to='/media/excel_files') 
    description = models.CharField(max_length=255) 

def __unicode__(self): 
    return self.description 

は通常、CSS、jsファイルなどのような静的なファイルを提供するために使用されている django.template.context_processors.media to your 'context_processors' under TEMPLATES section of settings.py .STATICタグを追加した後 {% static %} template tagまたは {{MEDIA_URL}}を利用して、お使いのExcelファイルのダウンロードリンクを提供するために、そのファイルのダウンロードを提供するためにMEDIA_URLを使用してもいい。だから、投稿の答えでモデルの定義、あなたのダウンロードリンクに基づいて

src="{{MEDIA_URL}}/{{ExcelUploads[0].excel_file.url}}"

関連する問題