【发布时间】:2020-07-06 01:00:10
【问题描述】:
每次我在不使用 is_valid() 函数的情况下从表单获取 stu_name 变量值时,stu_name 始终是用户输入的返回值,但使用 is_valid() stu_name 始终为 None。我做了一些实验,我发现 is_valid() 始终返回 false 但为什么呢?
这是views.py文件代码。
from django.shortcuts import render
from django.http import HttpResponse
from .models import student
from .forms import student_data
def my_data(request):
stu_name=None
myform=student_data(request.POST)
if (request.method=="POST" and myform.is_valid()):
stu_name=myform.cleaned_data['user']
else:
myform=student_data
return render(request,'show.html',{'student':stu_name})
这是我编写表单代码的html文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<form action="/payment/show/" method="POST">
{% csrf_token %}
<label for="">Name</label>
<input type="text" name="user" required>
<label for="">ID</label>
<input type="number" required>
<label for="">Address</label>
<input type="text" required>
<button type="submit">Add Me</button>
</form>
</div>
</body>
</html>
forms.py 文件代码。
from django import forms
class student_data(forms.Form):
name=forms.CharField(widget=forms.TextInput,max_length=20)
id=forms.IntegerField(widget=forms.NumberInput,max_value=6)
address=forms.CharField(widget=forms.TextInput,max_length=50)
【问题讨论】:
-
您的表单上唯一的命名字段是
user,而您的表单期望出现name、id和address... -
HTML 上的表单输入名称与表单对象的名称不匹配。你只有 name="user" ,没有 id 或 address 。
-
@JonClements 谢谢现在我的代码正在工作实际上我是 django 的新手,我什至不知道 php,所以我是服务器端编程的菜鸟。再次感谢你。另一个问题为什么我们需要在 form.py 中定义表单。在 forms.py 中定义表单是从 html 文件中创建的表单中收集数据。我对此感到困惑。
标签: python django python-3.x forms