#django
Вопрос:
Цель: Перенаправить на «журнал сборки» после отправки формы
Вид:
@login_required
def buildLogCreate(request, pk):
post = Post.objects.get(pk=pk)
if request.user.id != post.author_id:
raise PermissionDenied()
currentUser = request.user
form = BuildLogForm()
if request.method == 'POST':
form = BuildLogForm(request.POST, request.FILES)
if form.is_valid():
formID = form.save(commit=False)
formID.author = request.user
formID.post_id = pk
formID.save()
return redirect('build-log-view', formID.pk)
context = { 'form':form, }
return render(request, 'blog/buildlog_form.html', context)
Настройка структуры URL-адреса-post — >журнал сборки(подзаголовок), т. е.: /post/118/журнал сборки/69/
Форма успешно отправлена, но я получаю ошибку NoReverseMatch at /post/118/build-log-form/ Reverse for 'build-log-view' with arguments '(69,)'
, что меня смущает, так это то, что URL-адрес все еще находится в форме публикации, а не build log view
в аргументе, но 69
это правильный идентификатор журнала сборки, поэтому он должен работать.
url-адрес для перенаправления на
path('post/<int:pk>/build-log/<int:pkz>/', views.BuildLogDisplay, name='build-log-view'),
Комментарии:
1. Можете ли вы поделиться шаблоном URL-адреса, на который вы хотите перенаправить?
2. @WillemVanOnsem добавлено!
Ответ №1:
Шаблон URL-адреса имеет два параметра: первичный ключ объекта post и первичный ключ журнала сборки.
Таким образом, вы можете передать это с:
return redirect('build-log-view', pk, formID.pk)
или с именованными параметрами:
return redirect('build-log-view', pk=pk, pkz=formID.pk)