从 Django 表单中恢复数据

Recover data from a Django Form

这是我第一次参加 Django 表单挑战。 现在的挑战只是从 HTML 模板获取 last_name 信息并从视图存储到数据库中。所以我有一个场景:

models.py:

class Person(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

一个HTML模板,下面我只放表格部分:

      <form action="{% url 'store' %}" method="post">
        {% csrf_token %}
        <div class="form-group row">
          <label for="last_name" class="col-sm-2 col-form-label">Last Name</label>
          <div class="col-sm-10">
            <input type="text" class="form-control" id="last_name" placeholder="Last Name">
          </div>
        </div>

        <div class="form-group row">
          <div class="col-sm-10">
            <button type="submit" class="btn btn-primary">Send Last Name</button>
          </div>
        </div>
      </form>

以及 views.py 本身...我创建了一个 InsertLastName ModelForm 来存储表单中的数据,但没有成功。出于某种原因,当我尝试调用 form.cleaned_data 时,收到有关 is_valid() 验证的错误消息。看来我没有从标签中获取信息。

class InsertLastName(forms.ModelForm):
    class Meta:
        model = Person

        fields = ['last_name']
        exclude = ['first_name']

def index(request):
    persons = Person.objects.all()
    context = {'persons': persons}
    return render(request, '/index.html', context)

def store(request):
    form = InsertLastName(request.POST or None)
    print(form.cleaned_data['last_name'])

    return HttpResponse("Storing a new Last Name object into storage")

从我表单中的 last_name 标签获取信息的正确方法是什么? 我正在关注 documentation 并根据挑战模板进行编码。

您刚刚为输入的 html 标签设置了属性名称 示例:

<input type="text" name="first">

并在 view.py 的函数存储中获取输入:

request.POST.get("first")

将此添加到表单中的 html 模板

{{persons}}