Open Devinwon opened 6 years ago
使用了django框架的自带表单进行注册,没有使用原生手写,这样比较效率,当然也可以手写,会更加灵活。 在相应的app下面,新建forms.py,专门用于定义对应app的表单。 例如login/forms.py,
from django import forms class Regfm(forms.Form): username = forms.CharField( widget=forms.TextInput(attrs={"placeholder": "用户名5-20位", }), max_length=20, min_length=5, error_messages={"required": "用户名不能为空",}, label="注册用户" ) password_set = forms.CharField( widget=forms.PasswordInput(attrs={"placeholder": "设置密码6-20位",}), max_length=20, min_length=6, error_messages={"required": "密码不能为空",}, label="输入密码") password_confirm = forms.CharField( widget=forms.PasswordInput(attrs={"placeholder": "确认密码6-20位", "required": "required",}), max_length=20, min_length=6, error_messages={"required": "密码不能为空",}, label="确认密码") email = forms.EmailField( widget=forms.EmailInput(attrs={"placeholder": "邮箱(选填)",}), max_length=20, min_length=7, error_messages={"required": "邮箱不能为空",}, label="输入邮箱", required=False, )
模板当中的实例代码(部分),位于login/templates/reg.html
<div class="ui form"> <form action="/account/reg/" method="POST" class="" id="regfm" > {% for field in regfm %} <div id="regfield" class=""> {{ field.label_tag }}{{ field }} {{ field.errors}} </div> {% endfor %} <p id="regerr"> {% if err %} <i class="warning circle icon red"></i>{{ err }} {% endif %} </p> <input type="submit" value="注册" class="ui green button"> <input type="reset" value="重置" class="ui gray button"> {% csrf_token %} </form> </div>
视图处理函数,login/views.py
from django.shortcuts import render from django.contrib.auth.models import User from django.http import HttpResponse,HttpResponseRedirect from django.template import Template,Context from login.forms import Regfm def reg(request): context={} regfm=Regfm() context['regfm']=regfm if request.method=='GET': return render(request,'reg.html',context) else: try: regfm=Regfm(request.POST) if regfm.is_valid(): password_set=request.POST.get('password_set') password_confirm=request.POST.get('password_confirm') if password_set==password_confirm: username=request.POST.get('username') userResult = User.objects.filter(username__exact=username) if userResult: err="用户名"+username+"已经存在" context["err"]=err else: email=request.POST.get('email') User.objects.create_user( username=username, password=password_set, email=email, ) return HttpResponse("register success,contact with master ") else: err="两次密码不一致" context["err"]=err return render(request,'reg.html',context) except: return render(request,'reg.html',context)
效果示例:
使用了django框架的自带表单进行注册,没有使用原生手写,这样比较效率,当然也可以手写,会更加灵活。 在相应的app下面,新建forms.py,专门用于定义对应app的表单。 例如login/forms.py,
模板当中的实例代码(部分),位于login/templates/reg.html
视图处理函数,login/views.py
效果示例:![reg](https://user-images.githubusercontent.com/20663923/35624030-ac6f39ec-06c8-11e8-96f1-f960ac6b26a9.png)