Django中通过form来渲染模板

本文介绍了如何在Django中利用ModelForm和Form类轻松构建与模型关联的表单,详细展示了模板、视图和表单的代码结构,并提到了所需的import模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django可以相对容易的构建相应model的表单

方法有:ModelForm和Form

这是模板的代码

<fieldset style="width: 50%;align-items: center">
        <legend align="center">注册框</legend>
        <form action="" method="post" id="form_register">
            {%csrf_token%}
        <p>
            <label for="{{form.username.id_for_label}}">{{form.username.label}}</label>
            {{ form.username }}
        </p>
        <p>
            <label for="{{form.password.id_for_label}}">{{form.password.label}}</label>
            {{ form.password }}
        </p>
        <p>
            <label for="{{form.shenfenzheng.id_for_label}}">{{form.shenfenzheng.label}}</label>
            {{ form.shenfenzheng }}
        </p>
        <p>
            <label for="{{form.user_phone.id_for_label}}">{{form.user_phone.label}}</label>
            {{ form.user_phone }}
        </p>
</form>
        <input type="button" name="register" id="btn_reg" value="提交" onclick="register()" />
    </fieldset>

这是view代码

def register(request):
    """返回注册界面"""

    form = register_form()
    if request.method == "POST":
        form_submit = register_form(request.POST)
        if form_submit.is_valid():
            return HttpResponse('注册成功')
    return render(request, 'supermarket/sup_register.html', {"form": form})

这是form代码

class register_form(forms.Form):
    """注册表单,用于渲染模板"""
    username = forms.CharField(
        max_length=20,
        label='用户名',
        strip=True,
        required=True,
        error_messages={
            'required': '必填信息',
            'max_length': '长度不能超过20个字符',
            'invalid': '格式错误'
        }
    )
    password = forms.CharField(
        min_length=7,
        label='密码',
        required=True,
        widget=forms.widgets.PasswordInput(render_value=True),
        strip=True,
        error_messages={
            'min_length': '最小长度不能小于7',
            'required': '必填信息',
        }
    )
    shenfenzheng = forms.CharField(
        label='身份证号',
        required=True,
        validators=[RegexValidator(r'(\d+){18}|(\d+){17}X', '请输入正确的身份证号')],
        error_messages={
            'required': '必填信息'
        }
    )
    user_phone = forms.CharField(
        label='手机号',
        max_length=11,
        required=True,
        error_messages={
            'required': '必填信息',
            'max_length': '长度不符合要求',
            'invalid': '格式错误'
        },
        validators=[RegexValidator(r'1[35789]\d+{9}', '请输入正确的手机号')]
    )

这是form.py需要import的模块

from .models import *
from django.forms import Form
from django.forms import widgets
from django.forms import Field
from django.core.validators import ValidationError
from django.core.validators import RegexValidator
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值