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 работала.

Вернуться на верх