2017-04-25 7 views
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ファイル

答えて

1

は、次のようなものを作成する必要があります。

<a href="{% url 'doc_dwnldr' file_path='file_path_variable_here', original_filename='filename_variable_here' %}">Download </a> 
:あなたの テンプレートで次に

、何かのように行います
関連する問題