HttpResponseRedirect в Django. Не удается выполнить перенаправление на странице «Готово» - PullRequest
0 голосов
/ 11 апреля 2020

После заполнения страницы должно появиться сообщение «Готово», но у меня появляется сообщение об ошибке:

Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/candidate/done.html
The current path, candidate/done.html, didn't match any of these.

Не удается настроить перенаправление на страницу «Готово».

Здесь views.py :

from django.http import Http404, HttpResponseRedirect
from django.shortcuts import render, redirect

from .forms import AnketaForm
from .models import Anketa

def anketa_create_view(request):
    if request.method == 'POST':
        form = AnketaForm(request.POST)
        if form.is_valid():
            form.save()
        return HttpResponseRedirect('candidate/done.html')
    else:
        form = AnketaForm()
    return render(request, 'candidate/anketa_create.html', {'form': form})

urls.py (приложения / кандидат)

from django.urls import path

from . import views

urlpatterns = [
    path('', views.anketa_create_view, name = 'anketa_create_view'),
    ]

urls.py

from django.contrib import admin
from django.urls import path, include

from candidate.views import anketa_create_view

urlpatterns = [
    path('done/', anketa_create_view),
    path('', anketa_create_view),
    path('grappelli/', include('grappelli.urls')),
    path('admin/', admin.site.urls),
]

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

вам нужно дать имя готовому URL

path('done/', anketa_create_view, name='done'), 

и можно сделать с обратным

return HttpResponseRedirect(reverse('done'))

или вы можете сделать ярлык перенаправления

return redirect('done')
0 голосов
/ 12 апреля 2020

Удалить в urls.py

path('done/', anketa_create_view)

и заменить в views.py

return HttpResponseRedirect('candidate/done.html')

до

return render(request, 'candidate/done.html', {})

...