强制Django下载文件而不是链接

时间:2016-01-26 05:56:42

标签: python django

我正在使用 Django 创建一个网页,该网页使用模板中的以下代码填充表格:

if len(data) > index: print(data[index])

' 个人资料'使用Django中的FileField上传文件,并将其正确保存在Media文件夹中。但是当我点击not fo img时,

  

我收到了一个找不到页面 - 404错误

我看到的方法依赖于改变视图。但我的观点只是发送对象:

 {% for dog in foo %}

    <tr>
    <td> {{dog.first_name}} </td>
    <td> {{dog.last_name}} </td>
    <td> {{dog.email}} </td>
    <td><<a href =  {{dog.profile.path}}><img src="not fo.jpg"></a> </td>
    </tr>

有什么方法可以确保超链接导致文件下载/打开浏览器中的文件(PDF,DOC)?上传后,文件正确存储在媒体文件夹中。

2 个答案:

答案 0 :(得分:0)

你没有引用href属性,如果文件名的路径中有任何空格(就像你在你的img的src中那样),那么它会尝试识别你的锚的另一个属性。

答案 1 :(得分:0)

有两个问题:

  1. 您没有引用属性值(正如Nick指出的那样)。

  2. 您正在使用.path - 这是文件系统上文件的路径,您需要使用.url这是文件的网址,以便下载。

    如果MEDIA_ROOTC:\Files\MEDIA_URL/media/,并且您已将字段设为profile = models.FileField(upload_to='dogs'),则:

    {{ dog.profile.path }}C:\Files\dogs\hello.jpg{{ dog.profile.url }}/media/dogs/hello.jpg

  3. 简而言之,您需要:

    <a href="{{ dog.profile.url }}">