Реверс для 'printReports' с аргументами '('',)' не найден. Испробован 1 шаблон(ы)
В настоящее время мое приложение выполняет настройки, сохраненные в базе данных, для печати финансовых документов.
Я использую переменную pk для получения правильных форм и т.д.
Однако теперь, когда я пытаюсь перенаправить на пк для 'printReports' в моем проекте. Он возвращает вышеуказанную ошибку.
Я пытаюсь понять, где я неправильно отобразил это, но не могу найти никаких ошибок
Пожалуйста, посмотрите приведенный ниже код:
Views.py:
def printReports(request , reports_pk):
pkForm = get_object_or_404(SettingsClass , pk=reports_pk)
form= SettingsClass(instance=pkForm)
### Printing Trial Balance PDF
response = HttpResponse(content_type= 'application/pdf')
response['Content-Disposition']= 'attachment; filename=TrialBalance' + \
str(datetime.now()) + '.pdf'
response['Content-Transfer-Encoding'] = 'binary'
content = {"arr_trbYTD":arr_trbYTD , 'xCreditTotal':xCreditTotal , 'xDebitTotal':xDebitTotal , 'complexName':complexName , 'openingBalances': openingBalances ,'printZero':printZero}
html_string=render_to_string('main/pdf-trialbalance.html' , content)
html=HTML(string=html_string)
result=html.write_pdf()
with tempfile.NamedTemporaryFile(delete=True) as output:
output.write(result)
output.flush()
output.seek(0)
response.write(output.read())
return response
else:
printTrialBalance = False
return render(request , 'main/printReports.html')
URLS.PY:
#Reports
path('reportsHome' , views.reportsHome, name='reportsHome'),
path('accConnect/printReports/<int:reports_pk>' , views.printReports , name='printReports')
reportsHome.html:
{% extends "main/base.html"%}
{% block content%}
<h1 style=" text-align: center">Reports</h1>
<hr>
<br>
<div class="list-group">
<a href="#" class='list-group-item active'>Print Single Complex's</a>
{% for x in model %}
<a href="{% url 'printReports' reports.pk %}" class="list-group-item list-group-item-action" >{{ x.Complex }} Reports</a>
{% endfor %}
</div>
{% endblock %}
printReports.html:
<title>PDF Outuput - TrialBalance</title>
</div>
<br>
<br>
<div class="table-container">
<table style="width: 100%">
<th >Account</th>
<th>Description</th>
<th>Debit</th>
<th>Credit</th>
{% for arr_trbYTD in arr_trbYTD %}
<tr>
<td>{{ arr_trbYTD.Description }}</td>
<td>{{ arr_trbYTD.Account }}</td>
<td>
{%if arr_trbYTD.Debit > 0%}
{{arr_trbYTD.Debit}}
{%endif%}
</td>
<td>
{%if arr_trbYTD.Credit > 0%}
{{arr_trbYTD.Credit}}
{%endif%}
</td>
</tr>
<tr >
{% endfor %}
<td> <b>Totals</b> </td>
<td> </td>
{% for xDebitTotal in xDebitTotal %}
<td><b>R {{ xDebitTotal }}</b></td>
{% endfor %}
{% for xCreditTotal in xCreditTotal %}
<td><b>R {{ xCreditTotal }}</b></td>
{% endfor %}
</tr>
</table>
{% endblock %}
Похоже, что здесь может быть проблема, когда pk должен быть установлен в представлениях и шаблонах 'reportsHome', а также 'printReports'. Однако это также может быть связано с тем, как я пытался вызвать URL паттерны
Вы не передаете переменную "reports" в контекст. поэтому значение PK пустое. проверьте представление, которое рендерит reportsHome.html и примените необходимую переменную к шаблону, например:
def view_func(request)
......
return render(request, '<template_name>.html', {"report": report })
Вы не передаете переменную "reports" в контекст. поэтому значение PK пустое. проверьте представление, которое рендерит reportsHome.html и примените необходимую переменную к шаблону, например:
def view_func(request)
......
return render(request, '<template_name>.html', {"report": report })
Чтобы решить ошибку в заголовке, сначала нужно исправить использование url
в шаблоне и передать первичный ключ экземпляра SettingsClass
с:
{% url 'printReports' x.pk %}
Со:
{% for x in model %}
<a href="{% url 'printReports' x.pk %}" class="list-group-item list-group-item-action" >{{ x.Complex }} Reports</a>
{% endfor %}
Затем в вашем представлении вам не нужно использовать форму для доступа к атрибутам вашего экземпляра SettingsClass
, поэтому вы можете просто сделать что-то вроде:
def printReports(request , reports_pk):
settings_instance = get_object_or_404(SettingsClass , pk=reports_pk)
complexName = settings_instance.Complex
#CHECKING TRIAL BALANCE SETTINGS
if settings_instance.Trial_balance_Year_to_date == True:
...