У меня есть одностраничное приложение с формой и таблицей данных. Страница загружается нормально, но проблема в том, что форма не работает, когда я нажимаю кнопку «ОТПРАВИТЬ».
Когда я нажимаю кнопку «ОТПРАВИТЬ», появляется сообщение об ошибке Method Not Allowed (POST): /home/
Спасибо вам за помощь, ребята!
views.py
def _get_form(request, formcls, prefix):
data = request.POST if prefix in request.POST else None
return formcls(data, prefix=prefix)
all_items = List.objects.all
class Myview(TemplateView):
template_name = 'data_list/home.html'
all_items = List.objects.all
def get(self, request, *args, **kwargs):
return self.render_to_response({'scrap': Scrap(prefix="scrap_pre"), 'all_items': all_items})
def scrap(self, request, *args, **kwargs):
scrap = _get_form(request, Scrap, 'scrap_pre')
if request.method == "POST":
scrap = _get_form(request, Scrap, 'scrap_pre')
if scrap.is_valid():
print("Worked")
return self.render_to_response({'scrap': scrap})
def home(self, request, *args, **kwargs):
all_items = List.objects.all
return render(request, "data_list/home.html", {"all_items": all_items})
forms.py
class Scrap(forms.ModelForm):
url = forms.CharField()
class Meta:
model = List
fields = ["item", "site"]
urls.py
from django.urls import path, include
from . import views
urlpatterns = [
path("", views.add, name="add"),
path("scrap/", views.scrap, name="scrap"),
path("home/", views.Myview.as_view(), name="home"),
path("delete/<list_id>", views.delete, name="delete"),
path("datacontent/<list_id>", views.datacontent, name="datacontent")
]
home. html
<code><div>
<form action="" method="post" >
{% csrf_token %}
{{ scrap|crispy }}
<pre>
SUBMIT
.....