Хорошо, я пытаюсь показать все записи в моей 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.
введите описание изображения здесь