Django--django的form表单

定义一个django form表单:

 1)先定义form类,在forms.py中:

from django import forms
from django.forms import ValidationError
import re

"""
label='主机', 标签名
label_suffix='名:', 标签后缀名
initial='127.0.0.1' 初始值
error_messages={'required': '密码必填'} 错误提示信息

"""
def mobile_validate(value):
    mobile_re = re.compile(r'^(13[0-9]|15[0123456789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
    if not mobile_re.match(value):
        raise ValidationError('手机号码格式错误')


class registerForm(forms.Form):
    host = forms.CharField(label='主机', label_suffix='名:', initial='127.0.0.1')
    port = forms.IntegerField(error_messages={'required': '端口信息必填'})
    email = forms.EmailField()
    phone = forms.CharField(widget=forms.NumberInput, validators=[mobile_validate])
    # password = forms.CharField(widget=forms.PasswordInput, label='密码')

2)生成html标签,在templates/djangoformapp/index.html中:

 <!DOCTYPE html>
 <html lang="en">
 <head>
 <meta charset="UTF-8">
 <title>Django Form</title>
 </head>
 <body>
 <div align="center">
 <h1>Django Form 表单</h1>
 <hr>
 <form action="" method="post">
 {% csrf_token %}
 {{ form }}
 {# {{ form.as_p }}#}
 {# {{ form.as_table }}#}
 {# {{ form.as_ul }}#}
 <input type="submit" value="提交">
 </form>
 </div>
 </body>
 </html>

3) 在views.py中做用户提交的验证
    from django.shortcuts import render

    # Create your views here.
    from .forms import registerForm
    from .models import User


    def index(request):
        form = registerForm()
        if request.method == 'POST':
            # 使用提交的数据来生成form表单对象实例
            form = registerForm(request.POST)
            # 从form表单中获取数据
            # 先判断form表单中的数据是否合法
            if form.is_valid():
                # 开始取数据
                # 从 form.cleaned_data里面取数据
                """
                1种繁琐的方式
                """
                # host = form.cleaned_data.get('host')
                # port = form.cleaned_data.get('port')
                # email = form.cleaned_data.get('email')
                # phone = form.cleaned_data.get('phone')
                # print(host, port, email, phone)
                # User.objects.create(host=host, port=port, email=email, phone=phone)

            """
            简洁一点点的
            """
            User.objects.create(**form.cleaned_data)


        return render(request, 'djangoformapp/index.html', {'form': form})

        form.is_valid()方法返回True 或False,表明用户输入的数据是否合法,是否通过校验。
        如用户输入的数据不合法,错误信息将会放在form.errors这个字典中。key是字段名,value是字段的错误描述。
        合法数据将会放在cleaned_data中。cleaned_data是一个字典。通常获取form中数据的方法是先判断一个form数据是否合法,如果合法则去cleaned_data中取值:
            if form.is_valid():
                subject = form.cleaned_data['subject']

4)将用户在前端提交的数据保存到数据库中:
    所以要先定义模型类:
        在models.py中:
            from django.db import models


            # Create your models here.

            class User(models.Model):
                host = models.CharField(max_length=100)
                port = models.IntegerField()
                email = models.EmailField()
                phone = models.CharField(max_length=100)
          然后迁移以下数据(用makemigrations和migrate命令)

以上就完成了django form表单的创建!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值