[英]Set dynamic download path to django
我如何通過更改此部分來設置django的動態下載路徑:
(settings.MEDIA_ROOT,“文件夾/路徑/文件.pdf”)
with open(os.path.join(settings.MEDIA_ROOT, 'folder/path/file.pdf'), 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/pdf")
response['Content-Disposition'] = 'filename=invoice.pdf'
return response
像這樣:
(settings.MEDIA_ROOT,FUNCTION_RETURN_THE_PATH)
with open(os.path.join(settings.MEDIA_ROOT, FUNCTION_RETURN_THE_PATH), 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/pdf")
response['Content-Disposition'] = 'filename=invoice.pdf'
return response
如果使用函數,我會遇到很多錯誤,因為它期望在該位置使用字符串變量而不是函數。
在我的html中,有一個用於向用戶顯示所有模型
{% for printforme in print_user_charges %}
<tr>
<td>{{ printforme.invoice_number }}</td>
<td>{{ printforme.price }} €</td>
<td>{{ printforme.reason }}</td>
<td>{{ printforme.customer }} {{ printforme.customer.surname }}</td>
<td>{{ printforme.charge_date }}</td>
<td> <a href="{% url 'download_pdf' printforme.upload_pdf.id %}"> Download </a></td>
下載鏈接進入視圖:
def DownloadPdf(request, charge_id):
with open(os.path.join(settings.MEDIA_ROOT, get_file_path), 'rb') as fh:
response = HttpResponse(fh.read(), content_type="application/pdf")
response['Content-Disposition'] = 'filename=invoice.pdf'
return response
我存儲pdf,基於這樣的用戶ID:
def invoice_path_base_to_usersid(instance, filename):
return 'user_{0}/{1}'.format(instance.customer.id, filename)
所以我將pdfs存儲到media / user_ {id} /filename.pdf
我希望用戶單擊當前項目時下載特定的pdf文件。 但是我不知道如何使用用戶ID並將其放在公開位置以下載用戶想要的當前一個pdf。
您尚未調用該函數。
with open(os.path.join(settings.MEDIA_ROOT, get_file_path()), 'rb') as fh:
終於,我找到了一個解決方案,在這里將其發布,以幫助遇到此類問題的任何人。
我的主要問題是我嘗試獲取實例,並且在嘗試加載文件之前沒有將其傳遞給任何變量。
我將打開方法更改為,我發現最后一個更清晰了。
def DownloadPdf(request, charges_id):
try:
invoice = Charge.objects.get(pk=charges_id)
except Charge.DoesNotExist:
raise Http404
response = HttpResponse(File(invoice.upload_pdf), content_type="application/pdf")
response['Content-Disposition'] = 'attachment; filename="mypdf.pdf"'
return response
因此,答案是,如果要在Django中動態下載路徑,則必須查詢模型並將輸出放入變量中。
之后,通過這種方式調用此變量:
variable.field_of_model
您可以引用該記錄的任何字段並根據需要使用它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.