我最近開始使用 Django,我設法創建了兩個視圖,一個用于提交表單,另一個用于回傳 FileResponse,它們分別作業正常。
現在,我需要整合兩者,當客戶端提交表單時,我想使用前一個表單提交的欄位重定向到另一個視圖。我怎樣才能做到這一點?
這是我的表單視圖:
def submitForm(request):
if 'report' in request.POST:
date_start = request.POST.get('date_start')
date_end = request.POST.get('date_end')
state = request.POST.get('state')
return render(request, 'comissao.html')
這是我創建pdf檔案的視圖
def createPdf(request):
date_start = '20220301'
date_end = '20220331'
state = 'G00471'
body = "some html"
options = { 'quiet': '' }
pdfkit.from_string(body, options=options)
file = open('file.pdf', 'rb')
return FileResponse(file)
如您所見,我需要在第一個視圖中傳遞的資訊,在第二個視圖中使用,我嘗試過這樣的事情,但我認為我誤解了這個概念,
return reverse('pdf', kwargs={'state':state, 'date_start':date_start, 'date_end':date_end})
uj5u.com熱心網友回復:
reverse()僅回傳 URL,但我認為您更愿意 redirect()對該視圖進行操作。
為了傳遞引數,您有幾個選項:
- 獲取引數
- 會議
- 網址引數
讓我們使用 GET 引數,我建議:
from urllib.parse import urlencode
...
def submitForm(request):
...
response = redirect('pdf')
params = { state' : state, 'date_start: date_start, 'date_end': date_end}
response['Location'] = f'?{urlencode(params)}'
return response
然后在您的 PDF 視圖中,您需要決議 GET 引數:
def createPdf(request):
date_start = request.GET.get("date_start")
...
請注意,您可能還需要將日期轉換為字串并回傳用于查詢,我在這里忽略了它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/476537.html
標籤:Python python-3.x django 文件 pdf工具包
上一篇:嵌套的while陳述句中沒有迭代
