创建组件“ovalshape”失败_Django的forms组件检验字段\渲染模板

8d3a054305a0a68d6f2d78054d760377.png

Ⅰ forms组件介绍

  • 注册功能,登录功能,前端需要校验(字段长度,邮箱是否合法....)
  • 前端校验可以没有,后端校验是必须的,使用传统方式 if判断写的很多
  • 借助于forms组件,可以快速实现字段的校验
  • 导入:from django.forms import Form

Ⅱ forms校验字段功能

  • 自定义校验的字段及校验的方式
# 自定义校验
class RegisteredForm(forms.Form):
    name = forms.CharField(max_length=32,min_length=3)  # 最长,32,最短 3
    password1 = forms.CharField(max_length=32,min_length=8,label='模板渲染使用')
    password2 = forms.CharField(max_length=32,min_length=8)
    pass
  • 视图函数中使用
  • from app01.view import src # 自定义校验,导入
  • 数据校验成功的情况
data={'name':'wot','password1':'333334444','password2':'333334444'}
    form=src.RegisteredForm(data)
    if form.is_valid():
        print('校验通过')
        print('我是通过的数据',form.cleaned_data)  

e2be7cc3522e00e455b70c42f6d216c1.png
  • 数据校验失败的情况
  data={'name':'wot','password1':'333','password2':'333334444'}
    form=src.RegisteredForm(data)
    if form.is_valid():
        print('校验通过')
        print('我是通过的数据',form.cleaned_data)  # 不一定是上面传入的数据
    else:
        print('我是校验失败后,校验成功的数据',form.cleaned_data)
        # 哪个字段失败了?失败的原因是什么
        print('我是失败的信息,默认ul标签格式',form.errors)
        from django.forms.utils import ErrorDict
        #### 重写了__str__
        print('json格式的失败信息',form.errors.as_json())
        print('字典格式的错误信息',form.errors.as_data())
        # form.errors.as_ul()  # 是为了渲染模板
    return HttpResponse('ok')

e76e9360928ce1d2fadefba753696d8a.png

Ⅲ forms渲染模板功能

  • 视图函数
def register(request):
    if request.method == 'GET':
        form = src.RegisteredForm()
        return render(request, 'register.html', {'form': form})
    elif request.method == 'POST':
        # 数据校验
        form = src.RegisteredForm(request.POST)
        if form.is_valid():
            print('校验通过,存数据库')
        else:
            print(form.errors.as_data())
            print('校验失败,返回错误')
        return HttpResponse('ok')
  • 模板
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<hr>
<h1>手动创建模板</h1>
<form action="" method="post">
    <p>用户名:<input type="text" name="name"></p>
    <p>密码:<input type="text" name="password1"></p>
    <p>确认密码:<input type="text" name="password2"></p>
    <p><input type="submit" value="提交"></p>
</form>

<hr>
<h1>半自动渲染模板1</h1>
<form action="" method="post">
    <p>用户名:{{ form.name }}</p>
    <p>密码:{{ form.password1 }}</p>
    <p>确认密码:{{ form.password2 }}</p>
    <p><input type="submit" value="提交"></p>
</form>

<h1>半自动渲染模板2(用的最多)</h1>
<form action="" method="post">
    <p>{{ form.name.label }}--{{ form.name }}</p>  // label需要在自定义的字段参数写上
    <p>{{ form.password2.label }}---{{ form.password2 }}</p>
    <p>{{ form.password1.label }}---{{ form.password1 }}</p>
    <p><input type="submit" value="提交"></p>
</form>

<h1>半自动渲染模板3(用的最多)</h1>
<form action="" method="post">
    {% for foo in form %}
       <p>{{ foo.label }} :{{ foo }}</p>
    {% endfor %}

    <p><input type="submit" value="提交"></p>
</form>

<h1>全自动(了解)</h1>
<form action="" method="post">
{#    {{ form.as_ul }}#}
    {{ form.as_p }}
{#    <table>#}
{#        {{ form.as_table }}#}
{#    </table>#}

    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

ea29b5010e848cd0c20b72c807484114.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值