我有一个视图,显示从一个日期到另一个日期的条目,关于某个项目。项目模型称为" DNN"和时间在" Vnos"模型。
views.py:
def po_nalogu(request, dnn = None):
dnn = None
form = PregledDNNForm(
request.GET or None,
)
from_date = get_month_start(timezone.now())
to_date = from_date + relativedelta(months=1)
if request.GET:
if form.is_valid():
from_date, to_date, dnn = form.save()
entries_qs = Vnos.objects.filter(dna__dns__dnn = dnn)
month_entries = entries_qs.timespan(from_date, to_date=to_date).order_by('start_time')
sestevek = 0
for entry in month_entries:
sestevek = sestevek + entry.hours
template = 'porocila/po_nalogu.html'
context = {
'form' : form,
'from_date': from_date,
'to_date': to_date - relativedelta(days=1),
'entries': month_entries,
'sestevek' : sestevek,
}
return render(request, template, context=context)
现在,我想添加一个条件句,所以我可以打印PDF。有没有办法添加类似的东西:
if request.method == "PDF"
do code
并在模板中:
<form action="" method="PDF">
<input type="submit" />
</form>
我不想为PDF文件做单独的视图,因为它来自于和来日期,因为它再次计算了很多时间。 谢谢
答案 0 :(得分:0)
mmm,如果你想发送一个自定义参数,你可以这样做:
<form method="GET" action="/path/to/action/?pdf">
然后在视图中,您只需检查:
request.GET.get('pdf', '')
答案 1 :(得分:0)
我用POST方法解决了麻烦,因为GET方法从模板中的previus形式覆盖了我的参数。 Previus参数是from_date和to_date。这意味着GET方法有action =&#34;?pdf&#34;将其他所有内容设置为空白,并添加&#34;?pdf&#34;。
但这完美无缺。
模板:
<form method="POST" action="" class="pull-right">
{% csrf_token %}
<button type="submit"> PDF</button>
</form>
views.py:
if request.POST:
context = {
'request' : request,,
'from_date': from_date,
'to_date': to_date - relativedelta(days=1),
}
html_string = render_to_string("pdf.html", context)
html = HTML(string = html_string)
pdf = html.write_pdf()
response = HttpResponse(pdf, content_type = 'application/pdf')
response['Content-Disposition'] = 'attachment; filename="FILENAME.pdf"
return response