django中forms和modelform还有fields有什么区别和关系,作用分别是什么

这里写自定义目录标题

from django.shortcuts import render
from utils.tencent.sms import send_sms_single
import random
from django.http import HttpResponse
from Bug_plantProject import settings

# Create your views here.
def send_sms(request):
    """发送短信
    ?tql=login -> 1
    ?tql=register -> 2"""


    tql = request.GET.get('tql')
    print(tql, '发送短信')
    template_id = settings.Tencent_SMS_TEMPLATE.get(tql)

    print(template_id, '模板id')

    if not template_id:
        return HttpResponse('模板不存在')

    code = random.randrange(1000, 9999)
    res = send_sms_single('15129031997', template_id, code)

    print(res)
    if res[1]['resault'] == 1:
        return HttpResponse('登录页面')
    elif res[1]['resault'] == 2:
        return HttpResponse("注册页面")
    else:
        return HttpResponse('发送失败')


from django import forms
from app01 import models
from django.core.validators import RegexValidator
from django.core.validators import ValidationError
class registerModelForm(forms.ModelForm):
    password = forms.CharField(label='密码', widget=forms.PasswordInput())
    confirm_password = forms.CharField(label='确认密码', widget=forms.PasswordInput())
    mobile_phone = forms.CharField(label='手机号', validators=[RegexValidator(r'^1[3-9]\d{9}$')])
    email = forms.EmailField(label='邮箱', max_length=32)
    code = forms.CharField(label='验证码')
    class Meta:
        model = models.Userinfo
        fields = ['username','password','confirm_password','email','mobile_phone','code']
    def __init__(self):
        super().__init__()
        for name,field in  self.fields.items():
            field.widget.attrs['class'] = 'form-control'
            field.widget.attrs['placeholder'] = '请输入%s' %(field.label)
def register(request):
    form = registerModelForm()
    return render(request,'register.html',{'form':form})

问题:

为什么要实例化form对象,password调整要用到forms.CharField,field又是什么,他们三个是什么关系,有分别有什么作用

回答:

在Django中,ModelForm是一个非常有用的工具,它允许您将Django模型和表单结合起来,从而简化表单的创建和验证过程。在您的代码中,registerModelForm是一个继承自forms.ModelForm的自定义表单类。

实例化form对象:在register函数中,您创建了一个registerModelForm的实例,并将其传递给模板进行渲染。这是因为在处理表单数据时,您需要创建一个表单对象,以便您可以访问表单数据并进行验证。

password调整要用到forms.CharField:forms.CharField是一个Django表单字段,用于处理文本输入。在您的代码中,您使用forms.CharField来定义password和confirm_password字段,并使用widget=forms.PasswordInput()来指定一个密码输入框。这样,当用户在表单中输入密码时,输入的内容将被隐藏。

field是什么:field是registerModelForm表单类中的一个属性,它包含了表单中的所有字段。在您的代码中,您使用self.fields.items()来遍历表单中的所有字段,并对每个字段进行一些操作。

他们三个(实例化form对象、forms.CharField、field)的关系:registerModelForm是一个表单类,它继承自forms.ModelForm。在registerModelForm中,您定义了一些字段(例如password和confirm_password),这些字段是forms.CharField类型的。field是registerModelForm表单类中的一个属性,它包含了表单中的所有字段。

他们三个(实例化form对象、forms.CharField、field)的作用:实例化form对象是为了在处理表单数据时使用。forms.CharField用于定义文本输入字段,并指定一个密码输入框。field用于访问表单中的所有字段,并对每个字段进行一些操作,例如添加CSS类和占位符文本。

希望这个解释能帮助您理解这三个概念之间的关系和作用。

相关推荐
m0_748255415 小时前
vscode配置django环境并创建django项目(全图文操作)
vscode·django·sqlite
明月看潮生15 小时前
青少年编程与数学 02-009 Django 5 Web 编程 17课题、中间件
python·青少年编程·中间件·django·编程与数学
独白不白18 小时前
django连接mysql数据库
数据库·mysql·django
wyk123_0461 天前
Django 连接(sqlserver)数据库方法
数据库·sqlserver·django
网络风云1 天前
Django 5 实用指南(一)安装与配置
后端·python·django
ZZZ_Tong1 天前
Django REST Framework (DRF) 中用于构建 API 视图类解析
后端·python·django
网络风云2 天前
Django 5实用指南(二)项目结构与管理
后端·python·django
明月看潮生2 天前
青少年编程与数学 02-009 Django 5 Web 编程 21课题、部署
python·青少年编程·django·部署·编程与数学
谁不学习揍谁!2 天前
基于Django快递物流管理可视化分析系统(完整系统源码+数据库+详细开发文档+万字详细论文+答辩PPT+详细部署教程等资料)
数据库·人工智能·后端·python·django·数据可视化
明月看潮生2 天前
青少年编程与数学 02-009 Django 5 Web 编程 22课题、性能优化
python·青少年编程·性能优化·django·编程与数学