django (已解决)如何创建pdf下载按钮?

5f0d552i  于 2023-03-09  发布在  Go
关注(0)|答案(2)|浏览(135)

[解决方案]我需要制作{{ product.pdf }}到{{ product.pdf.url }}
我试图创建一个按钮下载PDF作为一个乞丐。这是代码:index.html:

<a href="{{ product.pdf }}" download>
 <button class="text-bg-success rounded mx-auto border-0 shadow rounded" style="width: 100%;height: 100%; margin-top: 30px;">
  Download
 </button>
</a>

models.py:

class Product(models.Model):
  pdf = models.FileField(upload_to='uploads/pdfs/', blank=False, null=False ,  validators=[FileExtensionValidator(allowed_extensions=["pdf","epub"])])

当我检查按钮时,它显示了wright文件:

<a href="uploads/pdfs/BOOK.pdf" download="">
 <button class="text-bg-success rounded mx-auto border-0 shadow rounded" style="width: 100%;height: 100%; margin-top: 30px;">
  Download
 </button>
</a>

但是当我点击它的时候,它会打开一个新的标签页,什么也不做。我在考虑创建一个链接到一个空白页面,当打开这个页面时,它会启动一个下载,因为这样做可能会更好,但是我不知道这样做需要什么。或者可能有一个表格可以处理这类事情。找到另一种方法会特别有用,因为我可能需要在没有新浏览器版本的旧电脑上显示它。
我尝试点击一个没有PDF文件的产品的下载按钮,它下载了页面本身的html代码。这不是浏览器版本,因为它与他们提供的w3school模型一起工作。我还尝试删除按钮或将{{}}替换为{%%},但它什么也没做。我使用 Bootstrap 作为前端,但我不认为它与此有任何关系。

mkshixfv

mkshixfv1#

尝试使用锚标记代替,

<a href="{{ product.pdf.url }}" download class="text-bg-success rounded mx-auto border-0 shadow rounded" style="width: 100%; height: 100%; margin-top: 30px;">
  Download
</a>
tkclm6bt

tkclm6bt2#

您应该为下载的文件指定一个默认名称。

<a href="xxx.pdf" download="newfilename"><button>DownLoad</button></a>

相关问题