我有一个模式,用于存储file_name,file_link,is_active和上传的字段。我可以通过管理站点添加PDF,但我试图让用户能够从我创建的前端网页上下载PDF或在新选项卡上查看PDF。
目前,我创建的视图是获取每个PDF的信息,以便我可以显示名称,链接等。如果我将{{pdf.file_link}}放入其中,它就不会做任何事情
我真的很感激能得到一些帮助,这样我就可以停下来旋转我的车轮了。提前谢谢!+
编辑: 机型:
class HelpfulPDF(models.Model):
file_name = models.CharField(max_length=256)
file_link = models.FileField(upload_to='pdfs')
uploaded_on = models.DateField(auto_now=True)
is_active = models.BooleanField(default=True)
def __str__(self):
return "{} - {}".format(self.id, self.file_name)
查看: 正如您在视图中看到的,我只是从模型中获取日期。我还没有对实际的PDF做任何特别的事情。这是个问题。
@login_required()
def help_center_view(request):
data = dict()
data['userprofile'] = request.user.userProfile
data['get_pdfs'] = HelpfulPDF.objects.filter(is_active=True)
return render(request, 'help_center.html', data.items())
模板:
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
<hr>
<div class="text-center">
<b>Please look at the below PDF's.</b> <i>(You can view in browser or download to your computer)</i>
</div>
<hr>
<br><br>
<div class="text-center">
{% if get_pdfs %}
{% for each_pdf in get_pdfs %}
<div style="display: inline-block; width:275px; height: auto; border: thin grey solid; border-radius: 15px ">
<br>
{% if each_pdf.file_name %}
<h6>{{ each_pdf.file_name }}</h6>
{% else %}
<h6>Helpful PDF</h6>
{% endif %}
<hr>
<div style="margin-top: 13em">
<hr>
<button class="btn-primary btn-sm">Download PDF</button>
<a href="#"><button class="btn-primary btn-sm">View PDF Online</button></a>
</div>
<br>
</div>
{% endfor %}
{% else %}
<h4>There are no PDF's to display at this time.</h4>
{% endif %}
</div>
{% endblock %}
答案 0 :(得分:0)
如果您的pdf文件链接有效(尝试在浏览器中查看,看看会发生什么),那么应该可以在模板中执行相应的操作:
<a href={{ your_link }}></a>
添加target="_blank"
属性,使其在另一个标签页中打开。
如果您希望在点击时下载,可以向锚元素添加download
属性。
浏览器应自动处理打开或下载PDF。如果没有,那么您的链接无效(最可能的原因)或(更不可能因为您可能知道它)您的服务器在响应中发送错误的内容类型标头(您可以从浏览器检查) Chrome网络标签中的开发控制台。
答案 1 :(得分:0)
您可以创建一个视图来代理PDF文件并返回特定标题,请参阅以下答案:How to show a PDF file in a Django view