0
私は、ユーザーにダウンロード可能にしたいドキュメントのコレクション(.pptx
ファイル)を持っています。私はこの目的のためにdjangoを使用しています。私はいくつかの部分は、これらのリンクを使用して考え出した:Django - ダウンロードファイル
having-django-serve-downloadable-files
私が直面しています問題は、これらの部品を接続してあります。関連するコード個入り
settings.py
ファイル
MEDIA_ROOT = PROJECT_DIR.parent.child('media')
MEDIA_URL = '/media/'
HTMLテンプレート。 -
<div class = 'project_data slide_loc'>
<a href = "{{ MEDIA_URL }}{{ slide_loc }}">Download </a>
</div>
views.py
ファイル
def doc_dwnldr(request, file_path, original_filename):
fp = open(file_path, 'rb')
response = HttpResponse(fp.read())
fp.close()
type, encoding = mimetypes.guess_type(original_filename)
if type is None:
type = 'application/octet-stream'
response['Content-Type'] = type
response['Content-Length'] = str(os.stat(file_path).st_size)
if encoding is not None:
response['Content-Encoding'] = encoding
# To inspect details for the below code, see http://greenbytes.de/tech/tc2231/
if u'WebKit' in request.META['HTTP_USER_AGENT']:
# Safari 3.0 and Chrome 2.0 accepts UTF-8 encoded string directly.
filename_header = 'filename=%s' % original_filename.encode('utf-8')
elif u'MSIE' in request.META['HTTP_USER_AGENT']:
# IE does not support internationalized filename at all.
# It can only recognize internationalized URL, so we do the trick via routing rules.
filename_header = ''
else:
# For others like Firefox, we follow RFC2231 (encoding extension in HTTP headers).
filename_header = 'filename*=UTF-8\'\'%s' % urllib.quote(original_filename.encode('utf-8'))
response['Content-Disposition'] = 'attachment; ' + filename_header
return response
urls.py
ファイル
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
私が探しています詳細は次のとおりです。変数slide_loc
は、ファイルの場所(path/to/file/filename.pptx
EX)を持っていますユーザーがダウンロードボタンをクリックすると、URLとdoc_dwnldr
の機能をにどのようにマップするのですかリンクはあなたのテンプレートにクリックされたときに、あなたが持っている機能にマッピングされます
url(r'^(?P<file_path>\w+)/(?P<original_filename>\w+)/$', views.doc_dwnldr, name='doc_dwnldr')
:あなたののURLで10ファイル