不允许使用方法(POST):/ home /

问题描述 投票:0回答:1

我有一个带有表单和数据表的单页应用程序。页面加载正常,但是问题是当我按下“提交”按钮时,表单无法正常工作。

当我按下“提交”按钮时,它给了我这个错误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

<div>
    <form action="" method="post" >
    {% csrf_token %}
    {{ scrap|crispy }}
      <pre></pre>
    <button class="btn btn-outline-info" type="submit"  value="Submit">SUBMIT</button>
      <pre></pre><pre></pre><pre></pre><pre></pre>
</form>


</div>

<table class="table">
.....
python django forms view
1个回答
1
投票

如果您的后端未实现发布功能(该功能负责响应发布请求,则您无法发送发布请求(表单定义中的method ='post'))。您应该将“废料”功能更改为“发布”。

© www.soinside.com 2019 - 2024. All rights reserved.