save()方法不会将表单数据保存到数据库(Django ModelForm)

哈桑

我使用Django制作了一个简单的待办事项列表,除了在表单中输入的任何数据不会保存到数据库(也不会显示)之外,它都可以正常工作。

我的models.py:

    from django.db import models

    class TodoListItem(models.Model):
        content = models.TextField()

        def __str__(self):
            return self.content

forms.py:

from .models import TodoListItem
from django.forms import ModelForm

class TodoListForm(forms.ModelForm):
    class Meta:
        model = TodoListItem
        fields = ['content']

views.py:

from django import forms
from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from .models import TodoListItem
from .forms import TodoListForm

def home(request):
    context = {
        'items': TodoListItem.objects.all()
    }
    return render(request, 'home.html', context)

def enter_task(request):
    if request.method == 'POST':
        form = TodoListForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/')
        else:
            return HttpResponse('Form not valid')
    else:
        form = TodoListForm()
    return render(request, 'form.html', {'form': form})

我是根据文档进行操作的,我无法理解的是为什么该行在其下方form.save()时却无法执行return HttpResponseRedirect('/')

form.html文件,以防万一:

<!DOCTYPE html>
<html>
    <head>
        <title>Add task</title>
        <h1>Add Task</h1>
    </head>
    <body>
        <form action="{% url 'home' %}" method="post">
            {% csrf_token %}
            {{ form }}
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

我知道错误必须在views.py中,因为我使用管理站点手动将其添加到TodoListItem,并且html文件确实完美地显示了它,仅当我提交表单时,它就永远不会保存到上述模型中。

安奇

可能是您输入的表单操作不正确

<form action="{% url 'home' %}" method="post">
   {% csrf_token %}
   {{ form }}
 <input type="submit" value="Submit">
</form>

您必须将此网址放入表单操作中 enter_task

        <form action="{% url 'enter_task' %}" method="post">
            {% csrf_token %}
            {{ form }}
            <input type="submit" value="Submit">
        </form>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章