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

Вернуться на верх