方法有: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