最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Django實(shí)現(xiàn)商城驗(yàn)證碼模塊的方法

 更新時(shí)間:2021年06月01日 09:25:24   作者:測試軒  
本文主要涉及圖形驗(yàn)證碼的相關(guān)功能,主要包括,圖形驗(yàn)證碼獲取、驗(yàn)證碼文字存儲、驗(yàn)證碼生成等。需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

本文主要涉及圖形驗(yàn)證碼的相關(guān)功能,主要包括,圖形驗(yàn)證碼獲取、驗(yàn)證碼文字存儲、驗(yàn)證碼生成等。

圖形驗(yàn)證碼接口設(shè)計(jì)和定義

 驗(yàn)證碼獲取接口設(shè)計(jì)

img

uuid作為路徑參數(shù),唯一標(biāo)識驗(yàn)證碼所屬用戶

新建應(yīng)用

驗(yàn)證碼的相關(guān)邏輯我們用一個(gè)單獨(dú)的app處理,所以這里需要新建一個(gè)叫verifications的app,建好app后,打開views.py視圖文件,編寫一個(gè)驗(yàn)證碼的視圖類

class ImageCodeView(View):
    """圖形驗(yàn)證碼"""
    def get(self, request, uuid):
        """
        :param request: 請求對象
        :param uuid: 唯一標(biāo)識圖形驗(yàn)證碼所屬于的用戶
        :return: image/jpg
        """
        pass

然后配置路由

項(xiàng)目路由配置:

path('', include('apps.verifications.urls')),配置app的路由

path('image_codes/``uuid:uuid``/', views.ImageCodeView.as_view()),

驗(yàn)證碼處理相關(guān)準(zhǔn)備工作

準(zhǔn)備captcha擴(kuò)展包

​ 把captcha擴(kuò)展包放到verifications的lib目錄下,然后需要安裝Python的圖片處理庫,pip install Pillow

準(zhǔn)備Redis數(shù)據(jù)庫

redis用來存儲圖片驗(yàn)證碼上的數(shù)字,后面會用來做校驗(yàn)

"verify_code": { # 驗(yàn)證碼
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },

圖形驗(yàn)證碼后端邏輯實(shí)現(xiàn)

class ImageCodeView(View):
    """圖形驗(yàn)證碼
    """

    def get(self, request, uuid):
        """
        實(shí)現(xiàn)圖形驗(yàn)證碼邏輯
        :param uuid: UUID
        :return: image/jpg
        """
        # 生成圖形驗(yàn)證碼
        text, image = captcha.generate_captcha()

        # 保存圖形驗(yàn)證碼
        # 使用配置的redis數(shù)據(jù)庫的別名,創(chuàng)建連接到redis的對象
        redis_conn = get_redis_connection('verify_code')
        # 使用連接到redis的對象去操作數(shù)據(jù)存儲到redis
        # redis_conn.set('key', 'value') # 因?yàn)闆]有有效期
        # 圖形驗(yàn)證碼必須要有有效期的:設(shè)計(jì)是300秒有效期
        # redis_conn.setex('key', '過期時(shí)間', 'value')
        redis_conn.setex('img_%s' % uuid, 300, text)

        # 響應(yīng)圖形驗(yàn)證碼: image/jpg
        return http.HttpResponse(image, content_type='image/jpg')

圖形驗(yàn)證碼前端邏輯

Vue實(shí)現(xiàn)圖形驗(yàn)證碼展示

1.register.js

mounted(){
    // 生成圖形驗(yàn)證碼
    this.generate_image_code();
},
methods: {
    // 生成圖形驗(yàn)證碼
    generate_image_code(){
        // 生成UUID。generateUUID() : 封裝在common.js文件中,需要提前引入
        this.uuid = generateUUID();
        // 拼接圖形驗(yàn)證碼請求地址
        this.image_code_url = "/image_codes/" + this.uuid + "/";
    },
    ......
}

2.register.html

<li>
    <label>圖形驗(yàn)證碼:</label>
    <input type="text" name="image_code" id="pic_code" class="msg_input">
    <img :src="image_code_url" @click="generate_image_code" alt="圖形驗(yàn)證碼" class="pic_code">
    <span class="error_tip">請?zhí)顚憟D形驗(yàn)證碼</span>
</li>

3.圖形驗(yàn)證碼展示和存儲效果

Vue實(shí)現(xiàn)圖形驗(yàn)證碼校驗(yàn)

1.register.html

<li>
    <label>圖形驗(yàn)證碼:</label>
    <input type="text" v-model="image_code" @blur="check_image_code" name="image_code" id="pic_code" class="msg_input">
    <img :src="image_code_url" @click="generate_image_code" alt="圖形驗(yàn)證碼" class="pic_code">
    <span class="error_tip" v-show="error_image_code">[[ error_image_code_message ]]</span>
</li>

2.register.js

check_image_code(){
    if(!this.image_code) {
        this.error_image_code_message = '請?zhí)顚憟D片驗(yàn)證碼';
        this.error_image_code = true;
    } else {
        this.error_image_code = false;
    }
},

3.圖形驗(yàn)證碼校驗(yàn)效果

img

至此驗(yàn)證碼部分就說完了

到此這篇關(guān)于使用Django實(shí)現(xiàn)商城驗(yàn)證碼模塊的方法的文章就介紹到這了,更多相關(guān)Django 商城驗(yàn)證碼模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python通過zookeeper實(shí)現(xiàn)分布式服務(wù)代碼解析

    Python通過zookeeper實(shí)現(xiàn)分布式服務(wù)代碼解析

    這篇文章主要介紹了Python通過zookeeper實(shí)現(xiàn)分布式服務(wù)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python多線程如何獲取有序結(jié)果

    python多線程如何獲取有序結(jié)果

    在Python中,多線程編程是一個(gè)常見需求,尤其是在處理I/O密集型任務(wù)時(shí),然而,多線程環(huán)境下保持任務(wù)執(zhí)行結(jié)果的順序通常較為復(fù)雜,為了解決這一問題,可以通過封裝一個(gè)功能來確保即使在多線程環(huán)境下,任務(wù)的執(zhí)行結(jié)果也能按照一定的順序進(jìn)行收集和處理
    2024-09-09
  • Python過濾序列元素的方法

    Python過濾序列元素的方法

    這篇文章主要介紹了Python過濾序列元素的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python?Pyperclip模塊安裝和使用詳解

    Python?Pyperclip模塊安裝和使用詳解

    Pyperclip模塊兼容python2和python3,能跨平臺使用,這篇文章主要介紹了Pyperclip模塊安裝和使用詳解,需要的朋友可以參考下
    2023-03-03
  • node命令行服務(wù)器(http-server)和跨域的實(shí)現(xiàn)

    node命令行服務(wù)器(http-server)和跨域的實(shí)現(xiàn)

    本文主要介紹了node命令行服務(wù)器(http-server)和跨域的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 如何用Python破解wifi密碼過程詳解

    如何用Python破解wifi密碼過程詳解

    這篇文章主要介紹了如何用Python破解wifi密碼過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python3實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn)

    python3實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)簡單飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 快速上手基于Anaconda搭建Django環(huán)境的教程

    快速上手基于Anaconda搭建Django環(huán)境的教程

    Django具有完整的封裝,開發(fā)者可以高效率的開發(fā)項(xiàng)目,Django將大部分的功能進(jìn)行了封裝,開發(fā)者只需要調(diào)用即可,接下來通過本文給大家介紹基于Anaconda搭建Django環(huán)境的教程,需要的朋友可以參考下
    2021-10-10
  • Python封裝實(shí)現(xiàn)百度翻譯API

    Python封裝實(shí)現(xiàn)百度翻譯API

    這篇文章主要為大家詳細(xì)介紹了一個(gè)優(yōu)化的百度翻譯API封裝實(shí)現(xiàn),提供了一個(gè)簡單可靠且功能豐富的翻譯接口,感興趣的小伙伴可以了解一下
    2025-03-03
  • python list 切片倒著取的實(shí)現(xiàn)示例

    python list 切片倒著取的實(shí)現(xiàn)示例

    切片操作非常靈活,可以按照需要獲取列表中的任意一段元素,本文主要介紹了python list 切片倒著取的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評論

华容县| 广宁县| 密云县| 南江县| 象州县| 玉门市| 富川| 通道| 林芝县| 安乡县| 涡阳县| 徐汇区| 张家口市| 大安市| 清徐县| 尼玛县| 阳山县| 成安县| 新龙县| 虞城县| 克什克腾旗| 古丈县| 连平县| 故城县| 平舆县| 南和县| 辉县市| 东乡族自治县| 长武县| 沈阳市| 永福县| 积石山| 莱西市| 雅江县| 五家渠市| 沅江市| 旬邑县| 壶关县| 绍兴县| 隆回县| 开远市|