Django - как скачать загруженные файлы по ссылке - PullRequest
0 голосов
/ 02 октября 2019

Я загружаю файл и сохраняю его в папке вне папки мультимедиа. Я хочу добавить ссылку на скачивание в шаблон, чтобы иметь возможность загрузить файл напрямую. я не уверен, что добавить в URL, если я должен что-то добавить

я попробовал это в шаблоне, он говорит, что URL не найден

<a href="{{data.tar_gif.url}}"> Download File</a>

views.py

def uploaddata(request):
        if request.user.is_authenticated:

                if request.method == 'POST':

                        form = uploadform(request.POST, request.FILES)
                        if form.is_valid():
                                form.save()

                                return redirect('file_list')
                else:
                        form = uploadmetaform()

                return render(request, 'uploaddata.html', {
                        'form': form
                })
        else:
                return render(request, 'home.html')

html page


    <tbody>
        {% for data in dataset %}
        <tr>
            <td>{{data.path_id}}</td>
            <td>{{ data.tar_gif }}</td>

            <td>
                <a href="{{data.document.url}}"> Download File</a>


                </td>
        </tr>
        {% endfor %}
    </tbody>

models.py


class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    Assigned_Group= models.CharField(max_length=500, choices=Group_choices, default='Please Select')

    def __str__(self):
        return self.user.username

# upload file #

def nice_user_folder_upload(instance, filename):
    extension = filename.split(".")[-1]
    return (
        f"{instance.user_profile.Assigned_Group}/{filename}"
    )

class uploadmeta(models.Model):

    path = models.ForeignKey(Metadataform, on_delete=models.CASCADE)

    user_profile = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, verbose_name='Username')


    document = models.FileField(upload_to=nice_user_folder_upload, verbose_name="Dataset") # validators=[FileExtensionValidator(allowed_extensions=['tar', 'zip'])]


    def __str__(self):
        return self.request.user

1 Ответ

0 голосов
/ 02 октября 2019

На самом деле простой способ сделать это с помощью html download Атрибут, как вы этого достигнете, это

<a href="{{data.document.url}}" download> Download File</a>

, или вы также используете:

<a href="{{ data.document.url }}" download="{{ data.document.url }}"> Download File</a>
...