Django.urls.exceptions.NoReverseMatch URLS путь кажется правильным
Обычно это было бы простой проблемой для решения, и, возможно, я упускаю что-то очень простое. Но я бился головой об эту проблему все утро.
Я получаю сообщение об ошибке:
django.urls.exceptions.NoReverseMatch: Reverse for 'journalrep' with arguments '('',)' not found. 2 pattern(s) tried: ['reports/journalrep/(?P<column>[^/]+)/(?P<direction>[^/]+)\\Z', 'reports/journalrep/\\Z']
Я отладочный журнал моего приложения.
Мой urls.py содержит:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='reports'),
path('sumlist/', views.summary_list,name='sumlist'),
path('overallsummary',views.overallsummary,name='overallsummary'),
path('checkreg', views.checkreg, name='checkreg'),
path('checkdet/<chkno>/', views.checkdet, name='checkdet'),
path('journalrep/', views.journalrep, name='journalrep'),
path('journalrep/<column>/<direction>', views.journalrep, name='journalrep'),
path('journaldet/<tranid>', views.journaldet, name='journaldet'),
path('accountrep', views.accountrep, name='accountrep')
]
Представление, которое отображает шаблон, является представлением функции:
@login_required
def journalrep(request,column = 'date', direction = 'D'):
'''
Produce journal register
Will display information for a chart of accounts account if provided. If the value is 0 all
journal entries will be shown
'''
#
# Get list of accounts (Chart of acconts) to be used for account selection box
coa = ChartOfAccounts.objects.all().filter(COA_account__gt=0)
coa_account = request.session.get('coa_account', None)
if len(request.GET) != 0:
coa_account = request.GET.get('coa_account')
else:
if coa_account == None:
coa_account = '0'
if direction == 'D':
direction = '-'
else:
direction = ""
if coa_account == '0':
journal = Journal.objects.all().order_by(direction + column)
else:
journal = Journal.objects.filter(account__COA_account = coa_account).order_by(direction + column)
context = { 'coa' : coa, 'journal' : journal , 'coa_account' : Decimal(coa_account)}
request.session['coa_account'] = coa_account
return render(request, 'reports/journal.html', context)
А шаблон, который отображается:
Попробуйте вместо этого использовать следующее:
{% url 'journalrep' column='date' direction='D' %}
А также в urls.py:
path('journalrep/<str:column>/<str:direction>', views.journalrep, name='journalrep')
И потенциально удалить строку выше этой, так как я не уверен, что она необходима.
Возможно, что django архивирует первый, но трудно сказать с предоставленной информацией.
В этой строке (строка 3 шаблона)
<select name="coa_account" hx-get="{% url 'journalrep' row.transactionID %}" hx-target="#requestcontent" >
В этот момент вы не перебираете строки, поэтому значение row.transactionID
является пустым, создавая пустой аргумент ошибки.
Основываясь на том, что происходит позже и на вашем urls.py, вы, вероятно, также хотите ссылаться на journaldet
, а не на journaldep
, чтобы эта структура URL работала.