django: перенаправление обратно в многомодельное представление после передачи необходимых переменных - PullRequest
0 голосов
/ 03 марта 2019

Я получаю сообщение об ошибке:

Реверс для 'botanyoverview' с аргументами '({' flotation_id ':' 21 ',' sample_id ':' 28780488 '},)' не найден.Попробован 1 шаблон (ов): ['botany / botanyoverview / flotation / (? P [0-9] +) / sample / (? P [0-9] +) $']

Оба идентификатора существуют, обычно это проблема в urls.py, но я не могу ее обнаружить.

У меня есть несколько таблиц / моделей, которые отображаются в одном HTML-представлении, вы нажимаете на одну и вы идетена странице редактирования я пытаюсь исправить перенаправление, чтобы он возвращал вас на начальную страницу обзора, для этого требуются идентификаторы флотации и примеры.Первоначально URL работает, но выдает эту ошибку при попытке перенаправить обратно на исходную страницу после редактирования.Я не вижу ошибки, какие-либо идеи?

views.py

def editplantpart(request, pk, fk='', sp='', fl=''):
        post = get_object_or_404(PlantPart, pk=pk)
        if request.method == "POST":
            form = PlantPartForm(request.POST, instance=post)
            if form.is_valid():
                post = form.save(commit=False)
                sample_id=sp
                flotation_id=fl
                post.save()
                return redirect('botanyoverview', {  'flotation_id': flotation_id, 'sample_id':sample_id,})

        else:
            form = PlantPartForm(instance=post)
        return render(request, 'plantpart/create_plantpart.html', {'form': form})

urls.py

re_path('flotation/(?P<fl>\d+)/sample/(?P<sp>\d+)/fraction/(?P<fk>\d+)/plantpart/edit/(?P<pk>\d+)/edit/', views.editplantpart, name='editplantpart'),

html

<tr class='clickable-row' data-href="{% url 'editplantpart' fk=plantpart.fraction_id pk=plantpart.plantpart_id fl=flotation.flotation_id sp=flotation.sample_id  %}">

@@@ edit

URL для обзора ботаники

path('botanyoverview/flotation/<int:flotation_id>/sample/<int:sample_id>', views.botanyoverview, name='botanyoverview'),

1 Ответ

0 голосов
/ 04 марта 2019

Вы должны вызвать redirect, передав имя представления и, необязательно, некоторые позиционные или ключевое слово (в вашем случае) аргументы;URL-адрес будет преобразован в обратном направлении с использованием метода reverse():

redirect('botanyoverview', flotation_id=flotation_id, sample_id=sample_id)

Вот несколько примеров перенаправления:

https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/#examples

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