Django的form组件

1、reg.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页</title>
</head>
<body>
<form action="" method="post" novalidate>
    {% csrf_token %}
    <p>
        <label for="{{ form_obj.username.id_for_label }}">{{ form_obj.username.label }}</label>
        {{ form_obj.username }}
        {{ form_obj.username.errors.0 }}
    </p>
    <p>
        <label for="{{ form_obj.password.id_for_label }}">{{ form_obj.password.label }}</label>
        {{ form_obj.password }}
        {{ form_obj.password.errors.0 }}
    </p>
    <p>
        <label for="{{ form_obj.gender.id_for_label }}">{{ form_obj.gender.label }}</label>
        {{ form_obj.gender }}
        {{ form_obj.gender.errors.0 }}
    </p>
    <p>
        <label for="{{ form_obj.hobby.id_for_label }}">{{ form_obj.hobby.label }}</label>
        {{ form_obj.hobby }}
        {{ form_obj.hobby.errors.0 }}
    </p>
     <p>
        <label for="{{ form_obj.phone.id_for_label }}">{{ form_obj.phone.label }}</label>
        {{ form_obj.phone }}
        {{ form_obj.phone.errors.0 }}
    </p>

    <button>注册</button>
</form>
</body>
</html>
2、views.py

from django.shortcuts import render, redirect, HttpResponse
from django import forms
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError
# 自定义检验函数
def check_username(value):
    if 'alex' in value:
        raise ValidationError('用户名含有非法字符,请重新选择')

class RegForm(forms.Form):
    '''
    initial:表示默认值;
    min_length:设置用户名最小长度;
    max_length:设置用户名最大长度;
    error_messages:报错信息
    required:字段是否可以为空,True或者False
    disabled:是否可以编辑,False表示不允许编辑
    label:生成label标签或显示内容
    localize:是否支持本地化
    help_text:帮助信息,在标签旁边显示
    validators=[]:自定义验证规则
    widget:html插件
    '''
    username = forms.CharField(label="用户名",
                               min_length=6,
                               initial="张三",
                               error_messages={
                                   'required': '此字段是必填项',
                                   'min_length': '用户名不能少于6位'
                               },
                               validators=[check_username, ])  # 自定义检验函数
    password = forms.CharField(label="密码", widget=forms.PasswordInput)
    gender = forms.ChoiceField(label='性别', choices=((1, '男'), (2, '女')), widget=forms.RadioSelect)
    hobby = forms.fields.MultipleChoiceField(
        choices=((1, '篮球'), (2, '足球'), (3, '双色球')),
        label='爱好',
        initial=3,
        # widget=forms.widgets.Select() # 单选
        widget=forms.widgets.SelectMultiple()
    )  # ChoiceField单选;MultipleChoiceField多选
    phone = forms.CharField(
        label="手机号码",
        min_length=11,
        max_length=11,
        validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式不正确')],
    )  # 使用内置校验器

def reg(request):
    form_obj = RegForm()
    if request.method == 'POST':
        form_obj = RegForm(request.POST)
        if form_obj.is_valid():  # 对数据进行校验
            # True,写入到数据库
            pass
        print(form_obj.cleaned_data)  # 只有通过校验的数据
    return render(request, 'reg.html', {'form_obj': form_obj})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值