首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许的方法(POST):/home/

不允许的方法(POST):/home/
EN

Stack Overflow用户
提问于 2020-03-06 04:15:53
回答 1查看 57关注 0票数 0

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

当我按下“提交”按钮,它给我这个错误Method Not Allowed (POST): /home/感谢你的帮助!

views.py

代码语言:javascript
复制
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({'scrape': Scrape(prefix="scrape_pre"), 'all_items': all_items})

    def scrape(self, request, *args, **kwargs):
        scrape = _get_form(request, Scrape, 'scrape_pre')
        if request.method == "POST":
            scrape = _get_form(request, Scrape, 'scrape_pre')
            if scrape.is_valid():
                print("Worked")

        return self.render_to_response({'scrape': scrape})


    def home(self, request, *args, **kwargs):
        all_items = List.objects.all
        return render(request, "data_list/home.html", {"all_items": all_items})

forms.py

代码语言:javascript
复制
class Scrape(forms.ModelForm):
    url = forms.CharField()

    class Meta:
        model = List
        fields = ["item", "site"]

urls.py

代码语言:javascript
复制
from django.urls import path, include
from . import views

urlpatterns = [
    path("", views.add, name="add"),
    path("scrape/", views.scrape, name="scrape"),
    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

代码语言:javascript
复制
<div>
    <form action="" method="post" >
    {% csrf_token %}
    {{ scrape|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">
.....
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-06 04:19:38

如果您的后端没有实现post函数,您就不能发送post请求(表单定义中的method=‘post’),该函数负责响应post请求。你应该把你的“刮擦”功能改成“post”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60553298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档