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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

用Django内置form组件实现注册

發布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Django内置form组件实现注册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HTML頁面代碼塊:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5 
 6     <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
 7     <title>首頁</title>
 8 </head>
 9 <body>
10 
11 <div class="container">
12     <div class="row">
13         <div class="col-md-6 col-md-offset-3">
14             <form action="/index/" method="post" novalidate>
15                 {% csrf_token %}
16                 <div class="form-group {% if reg.user.errors.0 %} has-error {% endif %}">
17                     {{ reg.user.label }}
18                     {{ reg.user }}
19                     <span class="help-block" id="s1">{{ reg.user.errors.0 }}</span>
20                 </div>
21                 <div class="form-group {% if reg.psd.errors.0 %} has-error {% endif %}">
22                     {{ reg.psd.label }}
23                     {{ reg.psd }}
24                     <span class="help-block">{{ reg.psd.errors.0 }}</span>
25                 </div>
26                 <div class="form-group {% if reg.re_pwd.errors.0 %} has-error {% endif %}">
27                     {{ reg.re_pwd.label }}
28                     {{ reg.re_pwd }}
29                     <span class="help-block">{{ reg.re_pwd.errors.0 }}</span>
30                 </div>
31                 <div class="form-group {% if reg.email.errors.0 %} has-error {% endif %}">
32                     {{ reg.email.label }}
33                     {{ reg.email }}
34                     <span class="help-block">{{ reg.email.errors.0 }}</span>
35                 </div>
36                 <div class="form-group {% if reg.mobile.errors.0 %} has-error {% endif %}">
37                     {{ reg.mobile.label }}
38                     {{ reg.mobile }}
39                     <span class="help-block">{{ reg.mobile.errors.0 }}</span>
40                 </div>
41 
42                 <div class="form-group {% if reg.city.errors.0 %} has-error {% endif %}">
43                     {{ reg.city.label }}
44                     {{ reg.city }}
45                     <span class="help-block">{{ reg.city.errors.0 }}</span>
46                 </div>
47                 <div class="form-group">
48                     <button type="submit" class="btn btn-success">登錄</button>
49                 </div>
50 
51             </form>
52         </div>
53     </div>
54 
55 </div>
56 
57 <script src="/static/jquery-3.3.1.min.js"></script>
58 <script src="/static/csrf_ajax.js"></script>
59 <script src="/static/bootstrap/js/bootstrap.min.js"></script>
60 <script>
61     $("#id_user").on ('input',function () {
62         var user=$(this).val();
63         $("#s1").text('');
64         $.ajax({
65             url:'/check/',
66             type:'POST',
67             data:{"user":user},
68             datatype:'json',
69             success:function (arg) {
70                 if (arg){
71 
72                     $("#s1").text(arg).css("color", "red");
73 
74                 }
75 
76             }
77         })
78     })
79 </script>   
80 </body>
81 </html>

views代碼塊的邏輯處理:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 1 from django.shortcuts import render,redirect,HttpResponse
 2 
 3 # Create your views here.
 4 
 5 from appfind import models
 6 
 7 def check(request):
 8     if request.method=="POST":
 9         user=request.POST.get('user')
10         user_obj=models.UserInfo.objects.filter(user=user)
11         if user_obj:
12             msg='用戶名已存在。請更換!'
13         else:
14             msg=''
15         return HttpResponse(msg)
16 
17 from django import forms
18 from django.forms import widgets
19 from django.core.validators import RegexValidator
20 from  django.core.exceptions import ValidationError
21 class RegForm(forms.Form):  #利用RegForm去生成HTML字段標簽
22     user=forms.CharField(max_length=32,label='用戶名',
23                          error_messages={"required": "該字段不能為空",},
24                          widget=widgets.TextInput(attrs={'class':'form-control'}))
25     psd=forms.CharField(label='密碼',min_length=6,max_length=30,
26                         widget=widgets.PasswordInput(attrs={'class':'form-control'},render_value=True),
27                         error_messages={'min_length':'密碼不能少于6位',
28                                         "max_length": "密碼最長30位!",
29                                         "required": "該字段不能為空",})
30     re_pwd = forms.CharField(label='確認密碼', min_length=6, max_length=30,
31                              widget=widgets.PasswordInput(attrs={'class': 'form-control'}, render_value=True),
32                              error_messages={'min_length': '密碼不能少于6位',
33                                              "max_length": "密碼最長30位!",
34                                              "required": "該字段不能為空", })
35     email=forms.EmailField( label="郵箱",
36                             widget=widgets.EmailInput(attrs={"class": "form-control"}),
37                             error_messages={
38                                 "required": "該字段不能為空",
39                             })
40     mobile = forms.CharField(label="手機",
41                              validators=[
42                                  RegexValidator(r'^[0-9]+$','手機號碼必須是數字'),
43                                  RegexValidator(r'^1[3-8][0-9]{9}$','手機格式有誤')
44                              ],
45                              widget=widgets.TextInput(attrs={"class": "form-control"}),
46                              error_messages={
47                                  "required": "該字段不能為空",
48                              })
49     def clean_user(self):  #clean_user  user 就是要檢驗的字段
50         value=self.cleaned_data.get('user')
51         if "獨裁" in value:
52             raise ValidationError("不符合社會主義核心價值觀!")
53         return value
54 
55     def clean(self):   #重寫父類的clean方法
56         # 此時 通過檢驗的字段的數據都保存在 self.cleaned_data
57         psd=self.cleaned_data.get('psd')
58         re_pwd=self.cleaned_data.get('re_pwd')
59         if psd != re_pwd:
60             self.add_error('re_pwd',ValidationError('兩次密碼不一致'))
61             raise ValidationError('兩次密碼不一致')
62         return self.cleaned_data
63 
64     city=forms.ChoiceField(
65         choices=models.City.objects.all().values_list('id','name'),
66         label='城市',   
67         initial=1,
68         widget=forms.widgets.Select
69     )
70 
71     def __init__(self,*args,**kwargs):   #重寫父類的__init__方法
72         super().__init__(*args,**kwargs)  #每次初始化加載插件就重新再數據庫里取值
73         self.fields['city'].widget.choices=models.City.objects.all().values_list('id','name')
74 
75 def index(request):
76     regform=RegForm()           #實例化一個RegForm對象
77     if request.method=="POST":
78         regform = RegForm(request.POST)  #獲取對象
79         if regform.is_valid():           #校驗對象的所有字段
80             del regform.cleaned_data['re_pwd']     #刪除部分用戶表不需要存儲的字段
81             del regform.cleaned_data['city']
82             models.UserInfo.objects.create(**regform.cleaned_data)  #數據庫添加用戶數據
83             return HttpResponse('恭喜,注冊成功!')
84 
85     return render(request,'index.html',{'reg':regform})
86     #get請求直接把RegForm對象傳給頁面

?

轉載于:https://www.cnblogs.com/wen-kang/p/9635332.html

總結

以上是生活随笔為你收集整理的用Django内置form组件实现注册的全部內容,希望文章能夠幫你解決所遇到的問題。

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