Django перенаправление после загрузки формы
Страница
This page isn’t working. If the problem continues, contact the site owner.
HTTP ERROR 405
С терминала
Method Not Allowed (POST): /
Method Not Allowed: /
[20/Dec/2021 22:00:27] "POST / HTTP/1.1" 405 0
Как перенаправить на ту же страницу после нажатия кнопки загрузки страницы.
form.html-> включен в sidebar.html-> включен в home.html
<form method = "POST" action='.' enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
views.py
from django.shortcuts import render
from .forms import UserProfileForm
def index(request):
print(request.POST)
return render(request,'home.html')
urls.py
from django.conf import settings
from django.urls import path
from django.views.generic.base import TemplateView # new
urlpatterns = [
path('', TemplateView.as_view(template_name='home.html'), name='home'),
]
Поскольку вы перенаправляете на ту же страницу, я предполагаю, что вы также делаете запрос get при обслуживании формы на веб-странице. Но когда страница обслуживается как ответ на GET-запрос, она не должна содержать пустой словарь в атрибуте POST. Таким образом, выдается ошибка. По моему мнению
def index(request):
if request.method == "POST" :
print(request.POST)
return render(request,'home.html')
Должен решить проблему
Присоединение к документации Django
Возможно, что запрос может прийти через POST с пустым словарем POST - если, например, форма запрашивается через HTTP-метод POST, но не содержит данных формы. Поэтому не следует использовать if request.POST для проверки использования метода POST; вместо этого используйте if request.method == "POST"
Для получения дополнительной информации - https://docs.djangoproject.com/en/3.2/ref/request-response/
В вашем urls.py
Изменить на:
path(' ', index, name = 'home'),
И вы также должны импортировать ваше представление в urls.py