在表单提交时,如果模型未被赋值,可能是由于以下几种原因:
下面是一个示例代码来解决这个问题:
# 定义一个简单的表单类
from django import forms
class MyForm(forms.Form):
name = forms.CharField(max_length=100)
age = forms.IntegerField()
# 在视图函数中处理表单提交
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 表单验证通过,处理表单数据
name = form.cleaned_data['name']
age = form.cleaned_data['age']
# 执行其他逻辑操作
else:
# 表单验证失败,返回错误信息给用户
print(form.errors)
else:
# GET 请求,返回空的表单给用户
form = MyForm()
return render(request, 'my_template.html', {'form': form})
在这个示例中,我们定义了一个简单的表单类MyForm
,包含了name
和age
两个字段。在视图函数my_view
中,处理表单提交的逻辑。当请求方法为POST
时,我们首先使用request.POST
将提交的数据绑定到MyForm
实例中,然后使用form.is_valid()
方法验证表单数据是否有效。如果表单验证通过,我们可以通过form.cleaned_data
获取经过清洗后的表单数据,并执行其他逻辑操作。如果表单验证失败,我们可以通过form.errors
获取到错误信息,可以将错误信息返回给用户。当请求方法为GET
时,我们返回一个空的表单给用户。
请注意在模板文件my_template.html
中使用form
来展示表单。
这样,无论是在表单验证通过还是失败的情况下,模型都可以得到正确的赋值。
上一篇:表单提交时,密码值神奇地消失。
下一篇:表单提交时,模型为空传递至控制器