Django學習系列之用戶註冊

在上篇文章的基礎上,做些小小的改動.

forms.py

class RegisterForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput(attrs={'id':'pass'}))
    sex = forms.ChoiceField(widget=forms.RadioSelect,choices=SEX_CHOICES)
    birthday = forms.DateField(required=False,widget=SelectDateWidget(years=BIRTH_YEAR_CHOICES))
    phone = forms.CharField(required=False,validators=[validate_phone])

    class Meta:
        model = Register
        #fields = ['nickname','username','password','phone']
        fields = '__all__'

    def clean(self):
        cleaned_data=super(RegisterForm,self).clean()
        nick_name=cleaned_data.get('nickname')
        username = cleaned_data.get('username')
        password = cleaned_data.get('password')
        email = cleaned_data.get('email')
        db_email = Register.objects.filter(email=email)

        .....


       if email in [email.email for email in db_email]:
            self._errors['email'] = self.error_class([u"郵箱已經存在,請換一個!"])
        return cleaned_data

views.py

def register(request):
    sn="TC"+datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    if request.method == 'POST':
         regform = RegisterForm(request.POST,auto_id="%s",error_class=DivErrorList)
         if regform.is_valid():
             username = regform.cleaned_data['username']
             user=regform.save(commit=False)
             user.sn = sn
             user.save()
             return HttpResponseRedirect("/success/%s/" %username)
    else:
         regform = RegisterForm(auto_id="%s",label_suffix=":") #auto_id有3種設置:True/False/str 若是False不需要html元素中的id標識與True相反,auto_id="%s",則是field的名字
    return render(request,"register.html",{'reg':regform})

def success(request,name):
    return render(request,"sucess.html",{'username':name})


呵呵,成功將記錄寫到數據庫中了。

改天,再寫個用戶登錄(會話要考略了)。


如果想了解更多,請關注我們的公衆號
公衆號ID:opdevos
掃碼關注

gongzhouhao.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章