Я довольно новичок в Django, а также в JS / Jquery.
Я пытаюсь создать PDF-представление моего HTML-шаблона, нажав кнопку «Подтвердить». Я также написал сценарий js / jquery в том же шаблоне для создания PDF, и вместо этого я перенаправлен на мою домашнюю страницу; так же, как я определил это сделать в соответствующем методе представления.
Теперь мне интересно, почему он не запускает скрипт js / jquery и продолжает ссылаться на мой метод view, а также на то, что я могу сделать, чтобы он прошел через скрипт и преобразовал страницу в PDF и загрузил ее для пользователя после нажатия Кнопка «Подтвердить».
Большое спасибо за ваши умные комментарии!
Мой шаблон
<!DOCTYPE html>
{% load staticfiles %}
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="{% static 'css/quote_letter_est.css' %}">
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/0.9.0rc1/jspdf.min.js">
</script>
<title>Estimate Quote Letter</title>
<script>
var doc = new jsPDF();
var specialElementHandlers = {
'#editor': function (element, renderer) {
return true;
}
};
$('#Approve').click(function () {
doc.fromHTML($('#content').html(), 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});
doc.save('sample-file.pdf');
});
</script>
</head>
<div id="content">
<body bgcolor="#ffffff" border="1">
<form action="http://{{host}}:{{port}}/label/approve001" method="Get">
{%csrf_token%}
{% block content %}
{% if cust_data %}
{% for row in cust_data %}
<table id = "print-friendly" class="print-friendly" style="width:80%; cellspacing:0;">
<td colspan="8" align="left" valign="top" >{{ row.contact_fname }} {{ row.contact_lname }}<br>We trust that the following estimate meets with your approval and we look forward to working with you.<br><br>
</td>
<th colspan="2" align="left" style="width:300px; height:25px; font-size:14px;">
<p>TO: <br>{{ row.customer }} <br>{{row.add_line1}},
{{row.add_line2}} <br>{{ row.city}}, {{
row.province}}{{ row.postal_code}}
<br>ATTN: {{ row.contact_lname }}
<br>Phone: {{ row.phone }}
<br>Email: {{ row.email }}</th> </p>
<th></th><th align="left" style="width:300px;
height:25px; font-size:14px;">QUOTATION#:
{{ quotation_number }}<br>Date: {{
current_date}}<br><br>Sales Person: {{
row.sales_person }}<br>CSR: {{row.csr}}
<br>Estimator: {{estimater}}
</th>
<input type="hidden" name="Description" id="Description" value={{quote_description}}>
<input type="hidden" name="sales_person" id="sales_person" value={{sales_person}}>
<input type="hidden" name="csr_name" id="csr_name" value={{csr_name}}>
<input type="hidden" name="estimater" id="estimater" value={{estimater}}>
<input type="hidden" name="contact_lname" id="contact_lname" value={{row.contact_lname}}>
<input type="hidden" name="contact_fname" id="contact_fname" value={{row.contact_fname}}>
<input type="hidden" id="quotation_id" name="quotation_id" value={{ quotation_number }}>
<input type="hidden" name="deal_id" value={{ deal_id }}>
</table>
<button class="myButton" id="Approve" type="submit" name="approve001" formaction="approve001/" value=approve001>Approve</button>
<input type="button" class ="myButton" name="Revise_All"
onclick="window.location.href='http://{{host}}:
{port}}/label/generate_quotation_letter001/letter_quotation/?
id='+ quotation_id.value + '&deal_id=' + deal_id.value "
value="Revise" />
</div>
</body>
</html>
и этот метод my view (обратите внимание, что значения request.GET извлекаются из базы данных и обрабатываются в другом методе, и там нет проблем).
class approve(APIView):
def get(self, request):
print ("Step 1 121get")
part = request.GET['quotation_id']
try:
req_id = request.GET['quotation_id']
except:
req_id = ""
try:
verb = request.GET['approve001']
except:
verb = ""
if verb == "decline001": #""decline":
print ("decline data............")
try:
self.UpdateStatusRequest(req_id, "Request-Declined")
except:
quotation_id = ""
elif verb == "approve001": #""approved":
print ("approve data............")
try:
self.UpdateStatusRequest(req_id, "Request-Approved")
except:
quotation_id = ""
return redirect('/')
def UpdateStatusRequest(self, req_id, status_state):
print("pppppppppp", req_id, status_state)
query = "update label_newquote set status=" + "'" + status_state + "' " + " WHERE id = " + str(req_id) + ";"
print (query)
with connection.cursor() as cursor:
cursor.execute(query)
def post(self, request):
print("Step 1 post")
try:
submit = request.POST.get('submit')
except:
submit = ""
try:
decline = request.POST.get('decline')
except:
decline = ""
print(submit)
print(decline)
return redirect('generate_quotation_letter001/letter_quotation/')
и на всякий случай, это мой URL:
url(r'^generate_quotation_letter/perform_generate_quotation_letter/letter_quotation/LetterTwoQuotation/approve001/$', views_pdf.approve.as_view(), name="approve"),