我有一个带有表单和数据表的单页应用程序。页面加载正常,但是问题是当我按下“提交”按钮时,表单无法正常工作。
当我按下“提交”按钮时,它给了我这个错误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">
.....
如果您的后端未实现发布功能(该功能负责响应发布请求,则您无法发送发布请求(表单定义中的method ='post'))。您应该将“废料”功能更改为“发布”。