首页 > 解决方案 > 在 django 中提交表单时 POST 方法不起作用

问题描述

我在 django 中使用表单模块创建了反馈表。我编写了用于打印用户在提交表单时输入的表单数据的代码。但是当我提交表单时,由于用户数据未打印,因此无法正常工作。我是 django 的初学者。我尝试了很多来解决这个问题。但我做不到。如果有人知道我的代码有什么问题,请帮助我

表格.py

from django import forms 
class feedbackForm(forms.Form):
    Name=forms.CharField()
    RollNo=forms.IntegerField()
    Email=forms.EmailField()
    feedback=forms.CharField(widget=forms.Textarea)

视图.py

from django.shortcuts import render
from .import forms
def feedback_view(request):
    form=forms.feedbackForm()
    if request.method=='POST':
       form=forms.feedbackForm(request.POST)
       if form.is_valid():
            print('form validation success and  printing feeback info')
            print('student name :',form.cleaned_data['Name'])
            print('student RollNo:',form.cleaned_data['RollNo'])
            print('student Email :',form.cleaned_data['Email'])
            print('student feedback :',form.cleaned_data['feedback'])
    return render(request,'testapp/feedback.html',{'form':form})

网址.py

from django.conf.urls import url
from django.contrib import admin
from testapp import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^feed/', views.feedback_view),
]

反馈.html

<!DOCTYPE html>
{% load staticfiles %}
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="{%static "css/demo1001.css"%}">
    <title></title>
  </head>
  <body>
    <div class="container"  align=center>
       <h1>ShefJaz Student 2feedbackform </h1><br>

       <form   method="post">
        {{form.as_p}}
        {%csrf_token%}
        <button type="button" class="btn btn-primary">sumbit feedback</button>

      </form>


    </div>
  </body>
</html>

标签: pythondjango

解决方案


您正在使用一个函数作为 API 视图,所以应该在方法装饰器中提到它,如下所示

from rest_framework.decorators import api_view
 @api_view(['POST'])
 def feedback_view(request):
      .....
    your code
      .....

希望它能给你解决方案。

可以使用多个 HTTP 方法,如下所示。

@api_view(['POST', 'GET'])

推荐阅读