亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Django商城項目注冊功能的實現

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

熱門標簽:打電話機器人營銷 南陽打電話機器人 ai電銷機器人的優勢 地圖標注自己和別人標注區別 聊城語音外呼系統 騰訊地圖標注沒法顯示 商家地圖標注海報 孝感營銷電話機器人效果怎么樣 海外網吧地圖標注注冊

設計到的前端知識

項目的前端頁面使用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" id="user_name" v-model="username" @blur="check_username">
    span class="error_tip" v-show="error_name">[[error_name_message]]/span>
/li>
li>
    label>密碼:/label>
    input type="password" name="password" id="pwd" v-model="password" @blur="check_password">
    span class="error_tip" v-show="error_password">請輸入8-20位的密碼/span>
/li>

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

注冊業務實現

前端注冊業務邏輯

注冊表單代碼:

form method="post" class="register_form" >
    {{ csrf_input }}
    ul>
        li>
            label>用戶名:/label>
            input type="text" name="username" id="user_name" v-model="username" @blur="check_username">
            span class="error_tip" v-show="error_name">[[error_name_message]]/span>
        /li>
        li>
            label>密碼:/label>
            input type="password" name="password" id="pwd" v-model="password" @blur="check_password">
            span class="error_tip" 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 class="error_tip" v-show="error_password2">兩次輸入的密碼不一致/span>
        /li>
        li>
            label>手機號:/label>
            input type="text" v-model="mobile" @blur="check_mobile" name="mobile" id="phone">
            span class="error_tip" v-show="error_mobile">[[ error_mobile_message ]]/span>
        /li>

        li>
            label>圖形驗證碼:/label>
            input type="text" name="image_code" id="pic_code" class="msg_input">
            img src="{{ static('images/pic_code.jpg') }}" alt="圖形驗證碼" class="pic_code">
            span class="error_tip">請填寫圖形驗證碼/span>
        /li>
        li>
            label>短信驗證碼:/label>
            input type="text" name="sms_code" id="msg_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" id="allow" v-model="allow" @change="check_allow">
            label>同意”商城用戶使用協議“/label>
            span class="error_tip" 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="{{ static('js/vue-2.5.16.js') }}">/script>
script type="text/javascript" src="{{ static('js/axios-0.18.0.min.js') }}">/script>

準備register.js文件

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

script type="text/javascript" src="{{ 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/(?Pmobile>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] = backend
request.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+vue實現注冊登錄的示例代碼
  • django注冊用郵箱發送驗證碼的實現
  • 通用的Django注冊功能模塊實現方法
  • Django怎么在admin后臺注冊數據庫表
  • Django用戶登錄與注冊系統的實現示例
  • django 框架實現的用戶注冊、登錄、退出功能示例
  • django實現用戶注冊實例講解
  • Django實現auth模塊下的登錄注冊與注銷功能
  • Python Django 實現簡單注冊功能過程詳解
  • django的登錄注冊系統的示例代碼
  • django 通過ajax完成郵箱用戶注冊、激活賬號的方法

標簽:撫州 牡丹江 迪慶 六盤水 揚州 楊凌 聊城 南寧

巨人網絡通訊聲明:本文標題《Django商城項目注冊功能的實現》,本文關鍵詞  Django,商城,項目,注冊,功能,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Django商城項目注冊功能的實現》相關的同類信息!
  • 本頁收集關于Django商城項目注冊功能的實現的相關信息資訊供網民參考!
  • 推薦文章
    精品视频免费观看| 欧美激情一区二区三区在线播放 | 国产综合91天堂亚洲国产| 91麻豆精品国产自产在线| 国产成人欧美一区二区三区的| 精品视频免费看| 欧美大片一区| 国产成人啪精品| 精品视频免费在线| 天天做人人爱夜夜爽2020| 成人免费网站视频ww| 91麻豆国产福利精品| 成人av在线播放| 久久精品免视看国产明星 | 久久精品店| 免费一级片网站| 四虎影视精品永久免费网站| 国产麻豆精品| 色综合久久天天综线观看| 香蕉视频久久| 日韩avdvd| 国产伦久视频免费观看视频| 国产麻豆精品免费视频| 日韩中文字幕在线播放| 免费国产在线观看不卡| 国产高清视频免费观看| 美国一区二区三区| 日日日夜夜操| 久久国产影院| 国产成a人片在线观看视频 | 美女免费毛片| 欧美18性精品| 精品视频在线观看一区二区三区| 国产a一级| 国产伦精品一区二区三区无广告 | 亚欧成人乱码一区二区| 国产原创中文字幕| 天天色成人| 一a一级片| 欧美激情伊人| 青青久久精品国产免费看| 999久久久免费精品国产牛牛| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产视频网站在线观看| 精品视频在线观看视频免费视频 | 九九久久99| 国产国语在线播放视频| 亚洲精品久久玖玖玖玖| 午夜欧美成人久久久久久| 欧美一区二区三区性| 国产伦精品一区二区三区在线观看 | 九九久久国产精品| 国产高清在线精品一区a| 欧美a级片视频| 国产视频一区在线| 精品国产香蕉在线播出| 成人影院久久久久久影院| 久久国产精品自线拍免费| 青青青草视频在线观看| 日本特黄特黄aaaaa大片| 久久久久久久男人的天堂| 国产精品1024永久免费视频| 久久久久久久久综合影视网| 国产不卡高清| 一级毛片视频播放| 日本特黄特黄aaaaa大片| 一级女人毛片人一女人| 日韩一级黄色大片| 九九九网站| 台湾美女古装一级毛片| 国产福利免费观看| 免费国产在线观看| 国产精品免费精品自在线观看| 亚洲 欧美 成人日韩| 国产一区二区精品尤物| 亚洲天堂免费| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 中文字幕一区二区三区精彩视频| 国产伦久视频免费观看视频| 日韩在线观看免费| 黄色短视屏| 可以免费看毛片的网站| 九九久久国产精品| 国产精品12| 欧美激情伊人| 欧美18性精品| 亚欧成人毛片一区二区三区四区| 免费国产在线视频| 久久久久久久网| 精品国产一区二区三区久| 亚洲女人国产香蕉久久精品| 日韩专区亚洲综合久久| 国产精品自拍一区| 国产伦精品一区二区三区无广告| 一级毛片看真人在线视频| 午夜久久网| a级毛片免费观看网站| 精品在线观看国产| 一级女性全黄久久生活片| 成人免费观看的视频黄页| 一级女性全黄生活片免费| 天天做日日爱夜夜爽| 成人在免费观看视频国产| 韩国毛片免费| 99久久网站| 国产伦精品一区二区三区无广告| 天天色成人| 国产激情一区二区三区| 久久99青青久久99久久| 超级乱淫伦动漫| 久久精品店| 黄视频网站免费观看| 九九热国产视频| 二级片在线观看| 国产成人女人在线视频观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩免费在线视频| 精品国产香蕉伊思人在线又爽又黄| 99久久精品国产片| 国产原创中文字幕| 精品国产亚洲人成在线| 国产91精品一区| 日韩女人做爰大片| 97视频免费在线观看| 免费国产在线观看| 欧美一级视频高清片| 国产a一级| 一级毛片视频播放| 毛片高清| 国产视频在线免费观看| 国产一区二区精品久久91| 国产麻豆精品高清在线播放| 成人免费网站视频ww| 九九精品影院| 国产激情视频在线观看| 国产不卡在线观看视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 91麻豆国产福利精品| 日韩中文字幕一区二区不卡| 你懂的在线观看视频| 国产一区二区福利久久| 99色视频在线观看| 免费国产在线观看不卡| 精品国产一区二区三区久久久蜜臀| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品视频在线观看免费 | 欧美国产日韩久久久| 亚洲天堂一区二区三区四区| 青青青草影院| 美女免费毛片| 日韩中文字幕在线播放| 免费一级片网站| 一本高清在线| 国产伦久视频免费观看 视频| 日韩一级黄色大片| 青青久久精品国产免费看| 欧美爱色| 韩国毛片 免费| 日本伦理网站| 精品国产香蕉伊思人在线又爽又黄| 一级毛片视频免费| 中文字幕97| 国产一区精品| 成人在免费观看视频国产| 黄视频网站免费看| 精品久久久久久中文| 色综合久久天天综合| 精品国产亚一区二区三区| 日本特黄特黄aaaaa大片| 国产91视频网| 国产视频网站在线观看| 精品国产一区二区三区久久久狼| 久久99爰这里有精品国产| 国产不卡在线看| 国产成a人片在线观看视频 | 国产麻豆精品免费视频| 九九干| 午夜在线观看视频免费 成人| 国产极品精频在线观看| 欧美电影免费看大全| 国产一区二区福利久久| 中文字幕97| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产极品精频在线观看| 精品毛片视频| 欧美国产日韩精品| 色综合久久久久综合体桃花网| 欧美激情一区二区三区视频| 日本特黄特黄aaaaa大片| 美女免费精品视频在线观看| 欧美激情一区二区三区在线| 91麻豆国产福利精品| 美国一区二区三区| 黄色免费三级| 四虎影视精品永久免费网站| 国产一区二区精品| 高清一级做a爱过程不卡视频| 四虎影视库| 一本伊大人香蕉高清在线观看| 黄视频网站在线观看|