gpt4 book ai didi

Django 在新选项卡中打开并查看 PDF(存储在 AWS 中)

转载 作者:行者123 更新时间:2023-12-02 04:01:36 25 4
gpt4 key购买 nike

我有一个存储 PDF 文件的模型。在该模型的 DetailView 上,我希望有一个链接可以在新选项卡中查看 PDF。这里有类似的问题,我已经用过到目前为止,但看起来它们是针对本地 PDF 的。我的 PDF 在 AWS 上作为媒体存储。

这就是我现在所拥有的:

计划/models.py

class PlanSet(PlanModel):
...

class PlanSetPDF(models.Model):
planset = models.ForeignKey(PlanSet)
PDF = models.FileField(upload_to='planPDFs')
created = models.DateField(auto_now_add=True)
added_by = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)

计划/views.py

class PlanSetDetailView(DetailView):

model = PlanSet
template_name = "plan_detail.html"

def get_context_data(self, **kwargs):
context = super(PlanSetDetailView, self).get_context_data(**kwargs)
context['now'] = timezone.now()
return context

def view_pdf(request, pk):
pdf = get_object_or_404(PlanSetPDF, pk=pk)
image_data = open(pdf.PDF.url, "rb").read()
return HttpResponse(image_data, contenttype='application/pdf')

计划/urls.py

urlpatterns = [
url(r'^(?P<pk>\d+)/$', plan_detail, name='detail'),
url(r'^(?P<pk>\d+)/pdf/$', view_pdf, name='view_pdf'),
]

url.py:

url(r'^plans/', include(plan_sets.urls, namespace='plans')),

模板:

{% for pdf in object.plansetpdf_set.all %}
<a href="{% url 'plans:view_pdf' pdf.pk %}">
<span class="glyphicon glyphicon-file" aria-hidden="true"></span>PDF</a>
{% endfor %}

我收到内置的.OSError:[Errno 22] 无效参数: ' https://link_to_PDF_file_on_amazon '

Python 似乎无法打开该文件。我环顾四周,找不到任何答案。你们中的一个人能告诉我我哪里出错了吗?谢谢。

最佳答案

我完全看不到您的 view_pdf View 的要点。它所做的只是通过 URL 打开 PDF,下载它,然后将其重新发送到浏览器。何必呢?您应该直接链接到 PDF 的 url;当您这样做时,您可以告诉浏览器在新选项卡中打开它:

<a href="{{ pdf.PDF.url }}" target="_new">

关于Django 在新选项卡中打开并查看 PDF(存储在 AWS 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41621875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com