日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Django商城項目注冊功能的實現

瀏覽:26日期:2024-09-04 17:23:06
目錄設計到的前端知識注冊業務實現前端注冊業務邏輯導入vue.js和ajax請求的js庫準備register.js文件后端業務注冊邏輯設計到的前端知識

項目的前端頁面使用vue來實現局部刷新,通過數據的雙向綁定實現與用戶的交互,下面來看一下需求,在用戶輸入內容后,前端需要做一些簡單的規則校驗,我們希望在在用戶輸入后能夠實時檢測,如果有錯誤能夠在輸入框的下方顯示出來。

<li> <label>用戶名:</label> <input type='text' name='username' id='user_name'> <span class='error_tip'>請輸入5-20個字符的用戶</span></li><li> <label>密碼:</label> <input type='password' name='password' id='pwd'> <span class='error_tip'>請輸入8-20位的密碼</span></li>

上面是一個用戶和密碼的輸入框,當用戶輸入完用戶名以后,光標離開輸入框,能夠實時的檢測輸入內容的正確性,當輸入有問題的時候,在輸入框的下方顯示錯誤信息。

v-model實現數據的雙向綁定,v-on進行事件綁定,v-show是控制dom顯示與否,下面是加入vue后的部分代碼

<li> <label>用戶名:</label> <input type='text' name='username' v-model='username' @blur='check_username'> <span v-show='error_name'>[[error_name_message]]</span></li><li> <label>密碼:</label> <input type='password' name='password' v-model='password' @blur='check_password'> <span v-show='error_password'>請輸入8-20位的密碼</span></li>

用戶輸入的用戶名和username變量綁定,光標消失觸發綁定時間check_username,通過v-show綁定到布爾值變量error_name,來控制是否顯示字符串變量error_name_message,其他的輸入框都類似這種操作。

注冊業務實現前端注冊業務邏輯

注冊表單代碼:

<form method='post' > {{ csrf_input }} <ul><li> <label>用戶名:</label> <input type='text' name='username' v-model='username' @blur='check_username'> <span v-show='error_name'>[[error_name_message]]</span></li><li> <label>密碼:</label> <input type='password' name='password' v-model='password' @blur='check_password'> <span v-show='error_password'>請輸入8-20位的密碼</span></li><li> <label>確認密碼:</label> <input type='password' v-model='password2' @blur='check_password2' name='password2' id='cpwd'> <span v-show='error_password2'>兩次輸入的密碼不一致</span></li><li> <label>手機號:</label> <input type='text' v-model='mobile' @blur='check_mobile' name='mobile' id='phone'> <span v-show='error_mobile'>[[ error_mobile_message ]]</span></li><li> <label>圖形驗證碼:</label> <input type='text' name='image_code' class='msg_input'> <img src='http://www.b3g6.com/bcjs/{{ static(’images/pic_code.jpg’) }}' alt='圖形驗證碼' class='pic_code'> <span class='error_tip'>請填寫圖形驗證碼</span></li><li> <label>短信驗證碼:</label> <input type='text' name='sms_code' class='msg_input'> <a href='javascript:;' rel='external nofollow' class='get_msg_code'>獲取短信驗證碼</a> <span class='error_tip'>請填寫短信驗證碼</span></li><li class='agreement'> <input type='checkbox' name='allow' v-model='allow' @change='check_allow'> <label>同意”商城用戶使用協議“</label> <span v-show='error_allow'>請勾選用戶協議</span></li><li class='reg_sub'> <input type='submit' value='注 冊' @change='on_submit'> {% if register_errmsg %}<span class='error_tip2'>{{ register_errmsg }}</span> {% endif %}</li> </ul></form>導入vue.js和ajax請求的js庫

<script type='text/javascript' src='http://www.b3g6.com/bcjs/{{ static(’js/vue-2.5.16.js’) }}'></script><script type='text/javascript' src='http://www.b3g6.com/bcjs/{{ static(’js/axios-0.18.0.min.js’) }}'></script>準備register.js文件

register.js文件主要處理注冊頁面的交互事件,并且向服務端提交注冊表單請求

<script type='text/javascript' src='http://www.b3g6.com/bcjs/{{ static(’js/register.js’) }}'></script>

下面是實現的前端校驗邏輯以及表單提交邏輯

methods: { // 校驗用戶名 check_username() {let re = /^[a-zA-Z0-9_-]{5,20}$/;if (re.test(this.username)) { this.error_name = false;} else { this.error_name_message = ’請輸入5-20個字符的用戶名’; this.error_name = true;} }, // 校驗密碼 check_password() {let re = /^[0-9A-Za-z]{8,20}$/;this.error_password = !re.test(this.password); }, // 校驗確認密碼 check_password2() {if (this.password !== this.password2) { this.error_password2 = true;} else { this.error_password2 = false;} }, // 校驗手機號 check_mobile() {let re = /^1[3-9]d{9}$/;if (re.test(this.mobile)) { this.error_mobile = false;} else { this.error_mobile_message = ’您輸入的手機號格式不正確’; this.error_mobile = true;} }, // 校驗是否勾選協議 check_allow() {this.error_allow = !this.allow; }, // 監聽表單提交事件 on_submit() {this.check_username();this.check_password();this.check_password2();this.check_mobile();this.check_allow();# 輸入字段中有一個不符合規則就禁止if (this.error_name === true || this.error_password === true || this.error_password2 === true || this.error_mobile === true || this.error_allow === true) { // 禁用表單的提交 window.event.returnValue = false;} },}后端業務注冊邏輯

在用戶輸完用戶名之后,我們往往希望能夠跟快的給出這個用戶名是否符合注冊需求,前面只是對用戶名的規則進行了校驗,還想知道他是否已經在系統注冊過了,不然當用戶都輸完提交注冊再給出用戶名或者手機號已經注冊過,體驗不是特別好。所以需要在光標離開用戶名輸入框的時候就請求服務端來判斷是否注冊過。

定義路由

path(’register/’, views.RegisterView.as_view(), name=’register’), # name添加命名空間path(’usernames/<str:username>’, views.UsernameCountView.as_view(), name='username'),re_path(r’mobiles/(?P<mobile>1[3-9]d{9})’, views.MobileCountView.as_view(), name=’mobile’)

編寫視圖類

class UsernameCountView(View): def get(self, request, username):'''查詢該用戶名是否在系統中存在:param request: 請求對像:param username: 前端傳遞的用戶名:return:'''count = User.objects.filter(username=username).count()return http.JsonResponse({’code’:1001, ’msg’:’用戶已存在’}) if count == 1 else http.JsonResponse({’code’: 1000, ’msg’: ’’})

這里沒有對響應做統一處理封裝,后面專門介紹一下。

然后就是注冊視圖類的編寫了:

class RegisterView(View): '''用戶注冊視圖類''' def get(self, request):’’’獲取注冊頁面’’’return render(request, ’register.html’) def post(self, request):''''''username = request.POST.get(’username’)password = request.POST.get(’password’)password2 = request.POST.get(’password2’)mobile = request.POST.get(’mobile’)allow = request.POST.get(’allow’)# 判斷參數是否齊全if not all([username, password, password2, mobile, allow]): return http.HttpResponseForbidden(’缺少必傳參數’)# 判斷用戶名是否是5-20個字符if not re.match(r’^[a-zA-Z0-9_-]{5,20}$’, username): return http.HttpResponseForbidden(’請輸入5-20個字符的用戶名’)# 判斷密碼是否是8-20個數字if not re.match(r’^[0-9A-Za-z]{8,20}$’, password): return http.HttpResponseForbidden(’請輸入8-20位的密碼’)# 判斷兩次密碼是否一致if password != password2: return http.HttpResponseForbidden(’兩次輸入的密碼不一致’)# 判斷手機號是否合法if not re.match(r’^1[3-9]d{9}$’, mobile): return http.HttpResponseForbidden(’請輸入正確的手機號碼’)# 判斷是否勾選用戶協議if allow != ’on’: return http.HttpResponseForbidden(’請勾選用戶協議’)try: user = User.objects.create_user(username=username, password=password, mobile=mobile)except DatabaseError as e: return render(request, ’register.html’, {’register_errmsg’: e.args})# 注冊成功保存會話login(request, user)return redirect(reverse(’contents:index’))

django提供的login方法,封裝了寫入session的操作,幫助我們快速登入一個用戶,并實現狀態保持,將通過認證的用戶的唯一標識信息(比如:用戶ID)寫入到當前瀏覽器的 cookie 和服務端的 session 中。

request.session[SESSION_KEY] = user._meta.pk.value_to_string(user)request.session[BACKEND_SESSION_KEY] = backendrequest.session[HASH_SESSION_KEY] = session_auth_hash

session會存入redis,之前在工程創建時進行session存儲的配置

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'SESSION_CACHE_ALIAS = 'session'

鏈接: https://pan.baidu.com/s/1dFliI6KkNubd4k_OTEpqDA 提取碼: h3dp

以上就是Django商城項目注冊功能的實現的詳細內容,更多關于Django 注冊功能的資料請關注好吧啦網其它相關文章!

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文字幕在线官网| 国产一级一区二区| 国产精品日韩久久久| 91青青国产在线观看精品| 91成人超碰| 日韩一区精品| 亚洲视频国产| 国产精品videossex久久发布| 日韩国产一区| 国产亚洲在线| 国产一级久久| 国模精品一区| 成人亚洲欧美| 国产精品色在线网站| 一区二区国产在线| 夜夜嗨av一区二区三区网站四季av| av免费不卡国产观看| 久久精品动漫| 福利一区二区免费视频| 亚洲人成毛片在线播放女女| 久久超碰99| 亚州av一区| 国产日产一区| 日韩精品第一| 国产中文欧美日韩在线| 中文字幕乱码亚洲无线精品一区| 精品国产乱码久久久| 亚洲制服欧美另类| 老色鬼精品视频在线观看播放| 久久亚洲二区| 成人午夜网址| 伊人精品一区| 免费视频一区三区| 乱人伦精品视频在线观看| 欧美久久精品一级c片| 亚洲免费激情| 午夜欧美视频| 婷婷精品在线观看| 国产精品久久久久久久久久久久久久久 | 亚洲免费专区| 日本强好片久久久久久aaa| 亚洲丝袜美腿一区| 日本aⅴ精品一区二区三区| 精品久久久久久久| 亚洲免费婷婷| 日本欧美国产| 亚洲免费毛片| 久久影院一区二区三区| 欧美日韩国产高清| 久久国产影院| 国产尤物精品| 宅男噜噜噜66国产日韩在线观看| 亚洲一区二区三区高清不卡| av中文字幕在线观看第一页| 91精品久久久久久久久久不卡| 欧美1区二区| 国产伦久视频在线观看| 成人在线视频中文字幕| 99精品99| 国产精品久久久亚洲一区| 午夜精品成人av| 国产色综合网| 国产一区二区三区视频在线| 一区在线视频观看| 国产欧美自拍| 久久精品人人| 日本不良网站在线观看| 国产精品一站二站| 午夜国产一区二区| 日韩av电影一区| 国产九一精品| 免费视频一区二区三区在线观看| 国产日韩欧美| 啪啪亚洲精品| 国产精品成人一区二区不卡| 久久久男人天堂| 国模 一区 二区 三区| 午夜在线一区二区| 精品久久不卡| 亚洲欧美日韩专区| 日本欧美一区| 日韩电影在线视频| av高清不卡| 国产婷婷精品| 亚洲综合电影| 久久久久亚洲精品中文字幕| 视频一区二区欧美| 国产精品毛片久久| 日本不良网站在线观看| 亚洲精品一级二级| 日本在线成人| 欧美日韩亚洲在线观看| 国产精品v一区二区三区| 视频在线观看一区| 久久婷婷久久| 精品国产欧美日韩| 国产欧美三级| 中文字幕亚洲精品乱码| 日韩精品午夜视频| 一本大道色婷婷在线| 国产剧情在线观看一区| 国产午夜精品一区二区三区欧美| 成人国产精品久久| 亚洲免费成人| 91日韩免费| 亚洲免费婷婷| 久久国产日本精品| 你懂的国产精品| 国产伦理久久久久久妇女| 久久高清免费观看| 午夜免费一区| 国内精品福利| 久久五月天小说| 久久三级中文| 久久国产人妖系列| 婷婷成人av| 色综合视频一区二区三区日韩 | 成人亚洲欧美| 成人三级高清视频在线看| 久久精品二区亚洲w码| 国产精品久久久久久模特 | 麻豆极品一区二区三区| 欧美亚洲tv| 国产区精品区| 国产调教精品| 青草综合视频| 国产欧美日韩精品高清二区综合区 | 一区二区三区国产盗摄| 宅男噜噜噜66国产日韩在线观看| 国产精品99免费看| 在线国产一区二区| 91精品二区| 久久av在线| 日韩一区精品视频| 亚洲午夜久久| 国产亚洲精aa在线看| 中文字幕免费精品| 深夜日韩欧美| 蜜桃精品视频| 日韩国产欧美一区二区| 蜜臀久久99精品久久一区二区| 亚洲精品一区三区三区在线观看| 给我免费播放日韩视频| 亚洲爱爱视频| 久久成人亚洲| 欧美国产极品| 精品成人免费一区二区在线播放| 一本色道精品久久一区二区三区| 日韩成人一级| 亚洲精品系列| 欧美精品国产白浆久久久久| 日韩国产欧美三级| 在线一区二区三区视频| 久久xxxx| 日韩精品免费一区二区夜夜嗨| 日韩在线视频精品| 噜噜噜躁狠狠躁狠狠精品视频 | 视频精品一区二区| 亚洲人成高清| 日韩一区二区三区免费视频| 欧美日本不卡| 国产精品毛片久久| 国产专区一区| 午夜av不卡| 亚洲精品一区三区三区在线观看| 亚洲伊人精品酒店| 久久av网址| 国产精品手机在线播放| 老鸭窝毛片一区二区三区| 国产va免费精品观看精品视频| 亚洲精品午夜av福利久久蜜桃| 欧美精品日日操| 精品一区毛片| 日韩中文字幕麻豆| 国产欧美高清视频在线| 日韩高清中文字幕一区二区| 夜久久久久久| 国产精品久久久久久久久久白浆| 日韩大片在线观看| 亚洲永久字幕| 国产精品成人国产| 亚洲成av人片一区二区密柚| 亚洲欧美日韩高清在线| 国产日韩欧美高清免费| 99tv成人| 日本不卡视频一二三区| 日本在线啊啊| 日韩美女精品| 日韩欧美午夜| 日韩国产在线观看| 蜜桃av在线播放| 日韩精品国产精品| 999久久久免费精品国产| 欧美精品三级在线| 99精品国产一区二区三区| 日韩国产一区二| 在线日韩视频| 亚洲精品影视| 久久亚洲国产| 久久久久九九精品影院|