日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python用户注册(基于django)

發布時間:2025/4/16 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python用户注册(基于django) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 前端部分(引入jquery與bootstrap)

<div class="container"><div class="col-md-8 col-md-offset-2">{% for item in form %}<div class="form-group"><lable>{{ item.label }}</lable>{{ item }}<span class="error pull-right"></span></div>{% endfor %}<input type="submit" class="btn btn-primary reg_btn" value="提交"></div></div><script>$('.reg_btn').click(function () {$.ajax({url:'',type:"post",dataType:"json",data:{user:$('#id_user').val(),pwd:$('#id_pwd').val(),r_pwd:$('#id_r_pwd').val(),email:$('#id_email').val(),csrfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val(),},success:function (res) {if(res.user){location.href='/login/'}else{$('.error').html('');$('.form-group').removeClass('has-error');//對相應信息遍歷顯示在頁面 $.each(res.err,function (i,j){/**if(i=='__all__'){$('#id_r_p').next().html(j[0]).css('color','red').parent().addClass('has-error');}else{$('#id_'+i).next().html(j[0]).css('color','red').parent().addClass('has-error');}**///將錯誤信息顯示在生成的span里 $('#id_'+i).next().html(j[0]).css('color','red').parent().addClass('has-error');});}}});});</script>

?

2. 后臺python

? 2.1 對django組件中用戶表字段的擴展

? (1)在models中添加用戶表新字段

from django.db import models from django.contrib.auth.models import AbstractUser# Create your models here. class user_info(AbstractUser):tel=models.CharField(max_length=32)

???(2)在setting中更改用戶認證組件的表配置信息

AUTH_USER_MODEL='app01.user_info'

????? 修改之后需重新遷移數據庫,如果無需添加新字段可省去上述步驟,直接使用django默認提供的auth_user表

?

??? 2.2? 業務代碼

from django.http import JsonResponse from django import forms from app01.models import user_info from django.core.exceptions import ValidationError import re from django.forms import widgets#注冊視圖函數 def register(request):if request.method=='GET':form=UserForm()return render(request,'register.html',locals())elif request.method=="POST":res={"user":None,'err':""}form=UserForm(request.POST)#驗證用戶信息if form.is_valid():res['user']=form.cleaned_data.get('user')user=form.cleaned_data.get('user')pwd=form.cleaned_data.get('pwd')email=form.cleaned_data.get('email')user_info.objects.create_user(username=user,password=pwd,email=email)else:res['err']=form.errorsreturn JsonResponse(res)#創建驗證規則對象 class UserForm(forms.Form):user=forms.CharField(max_length=32,label='用戶名')#widget = widgets.PasswordInput()前端密碼密文顯示pwd=forms.CharField(max_length=32,label='密碼',widget=widgets.PasswordInput())r_pwd=forms.CharField(max_length=32,label='確認密碼',widget=widgets.PasswordInput())email=forms.EmailField(max_length=32,label='郵箱')#使頁面渲染時增加需要的屬性def __init__(self,*args,**kwargs):super().__init__(*args,**kwargs)for filed in self.fields.values():filed.widget.attrs.update({'class':"form-control"})#設置鉤子,對相應的驗證框添加新的驗證規則(不一定會被執行)def clean_user(self):val=self.cleaned_data.get('user')user=user_info.objects.filter(username=val).first()if user:raise ValidationError('用戶已存在')else:return valdef clean_pwd(self):val = self.cleaned_data.get('pwd')if val.isdigit():raise ValidationError('密碼不能為純數字')else:return valdef clean_email(self):val=self.cleaned_data.get('email')if re.search('\w+@163.com$',val):return valelse:raise ValidationError('必須為163郵箱')# 全局鉤子,此方法一定會被執行def clean(self):pwd=self.cleaned_data.get('pwd')r_pwd=self.cleaned_data.get('r_pwd')if pwd and r_pwd and pwd!=r_pwd:# raise ValidationError('密碼不一致')self.add_error('r_pwd',ValidationError('兩次密碼不一致'))else:return self.cleaned_data

?

轉載于:https://www.cnblogs.com/wangdamao/p/11564485.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的python用户注册(基于django)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。