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类和占位符文本。

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

相关推荐
二等饼干~za8986686 小时前
碰一碰发视频系统源码开发搭建--技术分享
java·运维·服务器·重构·django·php·音视频
高洁018 小时前
基于Tensorflow库的RNN模型预测实战
人工智能·python·算法·机器学习·django
luoluoal1 天前
基于python的RSA算法的数字签名生成软件(源码+文档)
python·mysql·django·毕业设计
牢七2 天前
5655869
django
秋氘渔3 天前
智演沙盘 —— 基于大模型的智能面试评估系统
python·mysql·django·drf
jcsx4 天前
如何将django项目发布为https
python·https·django
百锦再4 天前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
Warren984 天前
datagrip新建oracle连接教程
数据库·windows·云原生·oracle·容器·kubernetes·django
韩立学长4 天前
【开题答辩实录分享】以《跳蚤市场二手物品交易推荐平台》为例进行选题答辩实录分享
python·django
飞天小蜈蚣4 天前
django的ulr注意事项、模板渲染
python·django·sqlite