Метод не разрешен (POST): / home / - PullRequest
0 голосов
/ 05 марта 2020

У меня есть одностраничное приложение с формой и таблицей данных. Страница загружается нормально, но проблема в том, что форма не работает, когда я нажимаю кнопку «ОТПРАВИТЬ».

Когда я нажимаю кнопку «ОТПРАВИТЬ», появляется сообщение об ошибке 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
   ..... 

1 Ответ

1 голос
/ 05 марта 2020

Нельзя отправить запрос на публикацию (method = 'post' в определении формы), если ваш бэкэнд не реализует функцию post, которая отвечает за ответы на запросы на публикацию. Вам следует изменить функцию «записки» на «опубликовать».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...