Отображение файлов базы данных в новом окне с django - PullRequest
0 голосов
/ 10 июля 2020

Хорошо, я пытаюсь показать все записи в моей FileField базе данных и назначить кнопку html для каждой записи. при нажатии кнопки откроется новое окно, в котором будет показан файл pdf, который хранится в базе данных.

models.py

class UploadedFile(models.Model):
the_file = models.FileField()

        def __str__(self):
    return self.the_file.name[:50]

Views.py

def show_file(response,pk):
    file_name=UploadedFile.objects.get(pk=pk)
    pdf = open( 'chartsapp/%s' % str(file_name), 'rb')
    response = FileResponse(pdf)
    return response

class Showing_File(ListView):
    model = UploadedFile
    template_name = 'index.html'
    context_object_name = 'the_uploaded_files_list'

URLs.py

path('show_file/<pk>', views.show_file),

index. html

{% for file in the_uploaded_files_list %}

    <p>  {{ file.the_file.name }} </p>
    <input type="button" value="Show Report" onclick="window.open('show_file/{{file.pk}}')">

{% endfor %}

Settings.py

MEDIA_URL = '/chartsapp/'
MEDIA_ROOT=os.path.join(BASE_DIR, "chartsapp")

Что происходит, так это мой индекс. html загружается, однако я не вижу названий записей базы данных или соответствующих кнопок, показанных на странице. Я думаю, что пути Media_Url и Media_root могут меня испортить. Я прочитал документацию и поигрался с путями, но без радости. пожалуйста, посмотрите картинку ниже макета проекта, на случай, если это корни носителей, которые испортили его.

Исправьте меня, если я ошибаюсь, но когда я загружаю FileField в django admin . сам файл не загружается, база данных - это скорее путь к папке, в которой он будет храниться. Этот путь должен быть носителем root.

введите описание изображения здесь

...