【问题标题】:Django Form request not saving data to dbDjango Form 请求未将数据保存到数据库
【发布时间】:2023-03-06 18:33:01
【问题描述】:

我在模板中使用 django 表单来保存输入到数据库的数据。 在我看来,请求发出后,响应被正确重定向,但数据没有保存到数据库中。

我可能遗漏了什么。但即使经过大量调试也无法找到它。

这是迄今为止所做的:

views.py:

from .models import testmodel

def testview(request):
    if request.method== 'POST':
        form=MapForm(request.POST)
        if form.is_valid():
            test1=request.POST.get('t1')
            print meaningid1
            test2=request.POST.get('t2')
            print meaningid2
            pobj=testmodel(test1=test1,test2=test2)
            pobj.save()
        return HttpResponse('Successful')

在此之后会看到响应消息“成功”

来自模板:

 <form action="/testview/" method="post"> {% csrf_token %}
 {{form.as_p}}
 <input type="text" name="t1" value='' id='t1'/> <br><br><br>
  <input type="text" name="t2" value='' id='t2'/><br>
  <input type="submit" value="Submit" />
 </form>

来自forms.py:

from .models import testmodel


class MapForm(forms.ModelForm):

    class Meta:
        model = testmodel
        fields = ['test1','test2']

在表格中输入数据后,它将进入页面/testview并在页面上显示消息。但来自后端的数据没有保存到数据库。 有人可以建议可以做什么

谢谢

【问题讨论】:

  • 投反对票,因为您还没有发布您的真实代码。 mapobj.save() 在你定义它之前被调用
  • 编辑了代码
  • 您确定您的表格有效吗?由于您的缩进,在任何一种情况下都会显示成功

标签: python django database templates


【解决方案1】:

在 python 中,缩进很重要。

def testview(request):
    if request.method== 'POST':
        form=MapForm(request.POST)
        if form.is_valid():
            test1=request.POST.get('t1')
            print meaningid1
            test2=request.POST.get('t2')
            print meaningid2
            pobj=testmodel(test1=test1,test2=test2)
            pobj.save()
        return HttpResponse('Successful')

在上面的代码中,无论表单是否实际成功,都会显示“成功”。您需要将 return 语句向右推四个空格,并且还需要添加一个 else 子句来处理表单无效的情况。通常这只是为了再次显示表单(如果您使用form.as_pform.as_table,则会自动为您显示表单错误)

【讨论】:

    猜你喜欢
    • 2016-11-22
    • 2022-12-20
    • 1970-01-01
    • 2020-09-29
    • 2021-10-07
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多