Можно ли передать две переменные в редиректе Django?

Я пытаюсь создать динамические URL в Django с двумя переменными, как показано ниже:

path('fin-data-add/<str:fintype>/fin-data-update/<str:pk>', views.finDataUpdate, name='fin-   data-update'),
 path('fin-data-add/\<str:fintype\>/fin-data-delete/\<str:pk\>', views.finDataDelete,    name='fin-data-delete')
 path('fin-data-add/\<str:fintype\>/fin-categories/fin-categories-delete/\<str:pk\>', views.finCatDelete, name='fin-categories-delete')

И я пытаюсь передать эти переменные в файле views.py следующим образом:

@login_required(login_url='home:login')
def finDataUpdate(request, fintype, pk):
expense = Expenses.objects.get(id=pk)
form = ExpenseForm(instance=expense)
if request.method == 'POST':
form = ExpenseForm(request.POST, instance=expense)
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
return redirect('boost:fin-data-update', kwargs={'fintype': fintype, 'pk': pk})

    database = Expenses.objects.all()
    fin_type = 'Expense'
    fin_type_plural = 'Expenses'
    
    context = {'form': form,
               'database': database,
               'fin_type': fin_type,
               'fin_type_plural': fin_type_plural}
    return render(request, 'boost/fin-data-update.html', context)

Но я получаю следующую ошибку: NoReverseMatch at /boost/fin-data-add/expense Reverse for 'fin-data-update' with arguments '(45,)' not found. 1 pattern(s) tried: ['boost/fin\\-data\\-add/(?P<fintype>[^/]+)/fin\\-data\\-update/(?P<pk>[^/]+)\\Z'] Возможно ли передать две переменные, как я пытаюсь?

Можно ли передать две переменные

Да, это возможно.

Вы получаете следующую ошибку:

Поиск для 'fin-data-update' с аргументами '(45,)' не найден

Это говорит о том, что один из ваших аргументов отсутствует. ( возможно, вашей fintype переменной )

Решение: перед перенаправлением убедитесь, что оба аргумента fintype и pk существуют.

# your code
if fintype and pk:
    return redirect('boost:fin-data-update', kwargs={'fintype': fintype, 'pk': pk})

# rest of your code

Если действительно отсутствует fintype, то это уже другая проблема.

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