[Fixed]-Django: generate download link

15👍

I’m not sure what exactly you mean by “generate download link”, but to simply link to the file, just use {{ some_file.url }} as your href.

6👍

In models.py:

import os

from django.conf import settings
from django.db import models

class File(models.Model):
    ... (your existing File model)

    @property
    def relative_path(self):
        return os.path.relpath(self.path, settings.MEDIA_ROOT)

(using the relpath method to strip MEDIA_ROOT from the value of self.path)

In your file_detail.html (or equivalent) template:

<a href='{{ MEDIA_URL }}{{ file.relative_path }}'>{{ file.name }}</a>

NB as Chris says, it’s better to use a FileField here. The above will hopefully work for your exact situation, but unless you’re deeply committed to arranging things that way, I’d suggest changing to the dedicated field.

5👍

try using href="{{ STATIC_URL }}/files/somefile", or href="{{ MEDIA_URL }}/files/somefile" for user uploaded content

👤Cinder

Leave a comment