Django中的表单(forms.Form)

Django中的表单:
1、HTML中的表单:用来提交数据给服务器的,不管后台的服务器用的是Django还是PHP语言还是其他语言
2、Django中的表单:
      ①渲染表单模板
      ②表单验证数据是否合法
3、Django中表单使用流程:
①app下新建forms.py文件,内容如下:
from django import forms  # 注意是django下的forms

# ①、定义一个表单
class MessageBoardForm(forms.Form):
    # error_messages字段,可以自定义某字段提交时出现错误的时候,显示的错误信息
    title = forms.CharField(max_length=100, label='标题', min_length=2, error_messages={"min_length": '标题字符段不符合要求!'})
    content = forms.CharField(widget=forms.Textarea, label='内容')
    email = forms.EmailField(label='邮箱')
    reply = forms.BooleanField(required=False, label='回复')

②views.py文件内容如下:
from one.forms import MessageBoardForm
from django.views.generic import View
# ②、定义GET或者POST方法:根据是GET还是POST请求来做相应的操作
class IndexView(View):
    # 如果是GET请求,那么返回一个空的表单
    def get(self, request):
        form = MessageBoardForm()
        return render(request, 'one/index.html', {'form': form})
    # 如果是POST请求,那么将提交上来的数据进行校验
    def post(self, request):
        form = MessageBoardForm(request.POST)
        if form.is_valid():
            title = form.cleaned_data.get('title')
            content = form.cleaned_data.get('content')
            email = form.cleaned_data.get('email')
            reply = form.cleaned_data.get('reply')
            print('=' * 30)
            print(title)
            print(content)
            print(email)
            print(reply)
            print('='*30)
            return HttpResponse('success')
        else:
            # 点上get_json_data()它,打印的错误信息会以json方式显示
            print(form.errors.get_json_data())
            return HttpResponse('fail')

③index.html文件内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <table>
        {{ form.as_table }}
        <tr>
            <td></td>
            <td><input type="submit" value="提交"></td>
        </tr>
    </table>
</form>
</body>
</html>
在使用GET请求的时候,我们传了一个form给模板,那么以后模板就可以使用form来生成一个表单的html代码;
在使用POST请求的时候,我们根据前端上传上来的数据,构建一个新的表单,这个表单是用来验证数据是否合法的;
如果数据都验证通过了,那么我们可以通过cleaned_data来获取相应的数据。在模板中渲染表单的HTML代码如下:

<form action="" method="post">
    <table>
	 {{ form.as_table }}
        <tr>
            <td></td>
            <td><input type="submit" value="提交"></td>
        </tr>
    </table>
</form>
我们在最外面给了一个form标签,然后在里面使用了table标签来进行美化,
在使用form对象渲染的时候,使用的是table的方式,当然还可以使用ul的方式(as_ul),也可以使用p标签的方式(as_p),
并且在后面我们还加上了一个提交按钮。这样就可以生成一个表单了
④urls.py加入路由:
path('', IndexView.as_view()),

4、用于表单验证常用的Field
CharField:
    max_length:这个字段值的最大长度
    min_length:这个字段值的最小长度
    required:这个字段是否必须,默认是必须的
    error_messages:在某个条件验证失败的时候,给出错误信息

EmailField:用来接收邮件,会自动验证邮件是否合法

FloatField:用来接收浮点类型,并且如果验证通过后,会将这个字段的值转换为浮点类型
    max_value:最大的值
    min_value:最小的值

IntegerField:用来接收整形,并且验证通过后,会将这个字段的值转换为整形
    max_value:最大的值
    min_value:最小的值

URLField:用来接收url格式的字符串

5、在验证某个字段的时候,可以传递一个validators参数用来指定验证器,进一步对数据进行过滤。
   验证器有很多,但是很多验证器我们其实已经通过这个Field或者一些参数就可以指定了。
   比如EmailValidator,我们可以通过EmailField来指定, 
   比如MaxValueValidator,我们可以通过max_value参数来指定。以下是一些常用的验证器:
	MaxValueValidator:验证最大值
	MinValueValidator:验证最小值
	MinLengthValidator:验证最小长度
	MaxLengthValidator:验证最大长度
	EmailValidator:验证是否是邮箱格式
	URLValidator:验证是否是URL格式
	RegexValidator:如果还需要更加复杂的验证,那么我们可以通过正则表达式的验证器:RegexValidator
    eg:比如现在要验证手机号码是否合格,那么我们可以通过以下代码实现:
	forms.py文件内容如下:
	 class MyForm(forms.Form):
     	     telephone = forms.CharField(
		validators=[validators.RegexValidator("1[345678]\d{9}",
		message='请输入正确格式的手机号码!')]
             )

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页