HttpResponseRedirect in Django. I can't configure redirect to the desired page
After filling out the form, a page should appear where it says that the form has been submitted successfully. But in my code it gives an error:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/candidate/done.html
Using the URLconf defined in ntkproject.urls, Django tried these URL patterns, in this order:
1. done
2.
3. grappelli/
4. admin/
The current path, candidate/done.html, didn't match any of these.
I can't set up a redirect to the page done.html
Here 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 (apps/candidate)
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),
]
Done.html
{% extends 'base.html' %}
{% block content %}
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center">
<h1 class="display-3">Спасибо за Ваш отклик!</h1>
<p class="lead">
Мы внимательно ознакомимся с Вашим резюме.
</p>
</div>
<div>
</div>
{% endblock %}
0
Author: Kirill Ryzhov, 2020-04-11
2 answers
I think you should move the address done
from url
of the project to url
of the application. Because in the redirect you go to the address url
application_name/done and you do not have such a url.
def done(request):
return render(request, 'candidate/done.html', {})
Urls.py (apps/candidate)
from django.urls import path
from . import views
urlpatterns = [
path('', views.anketa_create_view, name = 'anketa_create_view'),
path('done', views.anketa_create_view, name = 'done'),
]
1
Author: Vadim.Sharoikin, 2020-04-11 13:51:38
From urls.py remove path('done/', anketa_create_view)
In views.py return HttpResponseRedirect('candidate/done.html')
change to return render(request, 'candidate/done.html', {})
-1
Author: Kirill Ryzhov, 2020-04-12 14:54:52