djangoで指定のフォルダ内のcsvファイルのダウンロードリンクを生成する方法ないかな。

Djangoで指定のフォルダ内のCSVファイルのダウンロードリンクを生成するには、以下の手順を参考にしてください。

  1. urls.pyでパスを追加する:
    まず、urls.pyにCSVファイルのダウンロードを担当するビューへのパスを追加します。

    python
    # urls.py from django.urls import path from .views import download_csv urlpatterns = [ # 他のパス... path('download_csv/<str:filename>/', download_csv, name='download_csv'), ]
  2. ビューを作成する:
    ビューは指定されたファイル名に基づいてCSVファイルを読み込み、それをダウンロードさせるためのものです。

    python
    # views.py import os from django.http import HttpResponse from django.conf import settings from django.shortcuts import get_object_or_404 def download_csv(request, filename): file_path = os.path.join(settings.MEDIA_ROOT, 'your_csv_folder', filename) # ファイルが存在するか確認 if os.path.exists(file_path): with open(file_path, 'rb') as file: response = HttpResponse(file.read(), content_type='text/csv') response['Content-Disposition'] = f'attachment; filename={filename}' return response else: return HttpResponse('File not found', status=404)

    この例ではMEDIA_ROOTyour_csv_folderは適切に設定されている必要があります。また、セキュリティのために適切なフォルダへのアクセス権を確認してください。

  3. テンプレートにリンクを追加する:
    CSVファイルをダウンロードするためのリンクをテンプレートに追加します。

    html
    <!-- your_template.html --> <a href="{% url 'download_csv' filename='your_file.csv' %}">Download CSV</a>

    上記の例ではyour_file.csvが実際のCSVファイルのファイル名です。適切なファイル名を指定してください。

これで、指定のフォルダ内のCSVファイルに対してダウンロードリンクが生成されるようになります。

未分類

Posted by ぼっち