通过循环通过URL传递参数

2024-09-27 23:15:20 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试将PDF的名称传递给URL,以便视图可以显示相关的PDF

网址.py

path('show-invoice/<str:invoice>', views.pdf_view, name ="pdfview")

视图.py

def pdf_view(request, invoice):
    invoicename = Laptop.objects.get(invoice=invoice)
    invoicename = invoicename.invoice
    pdfpath = settings.MEDIA_ROOT + invoicename
    pdfpath = pdfpath.replace('/', '\\')
    try:
       return FileResponse(open(pdfpath, 'rb'), content_type='application/pdf')
    except FileNotFoundError:
       raise Http404()

型号.py

invoice = models.FileField(default='default.pdf', upload_to='uploads/')

发票清单.html

<h2>View invoices</h2>
{%for i in invoices%}
<ul>
   <li>
       <a href = "{%url 'laptops:pdfview' invoice=i.invoice%}"> {{i.invoice}} </a>
   </li>
</ul>
{%endfor%}

现在,我的问题是:为什么当我使用invoice='default.pdf'时它工作,而当我使用invoice=i.invoice时它不工作?我得到以下错误

NoReverseMatch at /invoices/
Reverse for 'pdfview' with keyword arguments '{'invoice': 'uploads/default1.pdf'}' not found. 1 pattern(s) tried: ['show\\-invoice\\/(?P<invoice>[^/]+)$']

Tags: pyview视图defaultforpdfshowinvoice

热门问题