#python #django #django-models #django-templates
Вопрос:
Я создал две кнопки для своих PDF-файлов: кнопку для чтения и кнопку для загрузки. моя кнопка загрузки работает, но я не знаю, как открыть файл с помощью кнопки чтения. могу ли я сделать то же, что и с кнопкой загрузки, или есть специальный способ открыть файлы
models.py
class Books(models.Model):
author = models.ManyToManyField(Author)
title = models.CharField(max_length=250)
image = models.ImageField(upload_to='pics/cover/', default='pics/default-cover.jpg')
pdf_files = models.FileField(upload_to='pdfs/books/', default='pdfs/default-pdf.pdf')
def __str__(self):
return self.title
forms.py
class BookForm(ModelForm):
class Meta:
model = Books
fields = '__all__'
settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.contrib.staticfiles.urls import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('book.urls')),
]
urlpatterns = staticfiles_urlpatterns()
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
detail.html
<div class="row">
<a href="{{ books.pdf_files.url }}"><button class="btn btn-outline-success">Download</button></a>
<a href=""><button class="btn btn-outline-primary">Read</button></a>
</div>
views.py
def detailView(request, id):
books = Books.objects.get(pk=id)
context = {
'books': books
}
return render(request, 'detail.html', context)
def addBooks(request):
form = BookForm()
if request.method == 'POST':
form = BookForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('allbooks')
context = {
'form': form
}
return render(request, 'books_form.html', context)
Ответ №1:
Вы можете попробовать это :
<embed src="{{ books.pdf_files.url }}" width="800px" height="2100px" />
Я отобразю PDF-файл на вашей странице.
Для лучшей читабельности вам следует создать новую страницу с файлом PDF внутри нее
Комментарии:
1. Я попробовал это, и он делает то же самое, что и тег <a href=»»> <a href=»»></a>, он автоматически загружает файл, но я хочу открыть файл
Ответ №2:
Я нашел решение, я удалил idm (Менеджер загрузок в Интернете), и мои файлы открылись нормально. Чтобы загрузить, я просто поставил загрузку перед href. спасибо за ваши ответы
detail.html
<div class="row">
<a download href="{{ books.pdf_files.url }}"><button class="btn btn-outline-success">Download</button></a>
<a href="{{ books.pdf_files.url }}"><button class="btn btn-outline-primary">Read</button></a>
</div>