Как перенаправить на новую страницу, используя идентификатор объекта после отправки формы в Django? - PullRequest
0 голосов
/ 23 марта 2020

Я хотел перенаправить на страницу, которая была недавно создана с отправкой формы. Я попытался вместо этого получить NoReverseMatch ошибку.

Вот возникшее исключение:

Реверс для 'receive' с аргументами ключевого слова '{' id ': 15}' не найден , Попробован 1 шаблон (ов): ['receive / (? P [0-9] +) $']

Вот мои взгляды:

def new_receive(request):
    """The page for adding a new receive."""
    if request.method != 'POST':
        form = ReceiveForm()
    else:
        form = ReceiveForm(data=request.POST)
        if form.is_valid():
            new_receive = form.save(commit=False)
            new_receive.save()
        return redirect('imsapp:receive', id=new_receive.id)
    context = {'form':form}
    return render(request, 'imsapp/new_receive.html', context)

def receive(request, receive_id):
    """The page for viewing a receive."""
    receive = Receive.objects.get(id=receive_id)
    receipt_no = receive.receipt_no
    date = receive.date
    context = {'receive':receive, 'receipt_no':receipt_no, 'date':date}
    return render(request, 'imsapp/receive.html', context)

Вот шаблоны URL:

# Page for adding a receive
path('new_receive', views.new_receive, name='new_receive'),
# Page for viewing a receive 
path('receive/<int:receive_id>', views.receive, name='receive'),

1 Ответ

0 голосов
/ 24 марта 2020

На этот вопрос ответили @bruno desthuilliers в разделе комментариев выше

, и ваш аргумент urlpath определен как "receive_id", а не "id" => return redirect ('imsapp: receive' , receive_id = new_receive.id)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...