[Django] captchaを使用してグラフィック検証コードを生成し、有効期間を設定します

通常、ログインインターフェイスにはグラフィック検証コードがあります。サードパーティのモジュールcaptchaを使用して、グラフィック検証コードをすばやく生成してフロントエンドに返し、正しいテキストをRedisデータベースに保存できます。

1.キャプチャ

最初にcaptchaをダウンロードし、Baiduネットワークディスクにアップロードしました。使用するcaptchaをダウンロードできます。抽出コード:mxum
ダウンロード後、解凍し、captchaファイルを取得し、プロジェクトフォルダーにコピーします。

このモジュールは非常に簡単に使用できます。captcha.pyファイルをインポートしてから、generate_captcha()メソッドを呼び出して、jpg形式で4桁の検証コードイメージを生成します。

from XXXXXX.captcha.captcha import captcha
text, image = captcha.generate_captcha()

2.Redisデータベースを構成します

Redisデータベースのストレージ情報を構成ファイルのCACHESディクショナリに追加します。検証コードテキストを2番目のライブラリに格納します。ライブラリエイリアスはverify_codeです。このエイリアスは後でデータを取得するために使用されます。

CACHES = {
    
    
	...
    # 验证码信息: 存到 2 号库
    "verify_code": {
    
    
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
    
    
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },

}

3. Redisに保存し、有効期間を設定します

生成された確認コードのテキストをRedisデータベースに保存し、画像をフロントエンドに返します。フロントエンドは一定期間内に確認コードを要求する必要があります。そうしないと無効になります。

verify.views.py

from django.views import View
from django  import http
from django_redis import get_redis_connection
from XXXXXX.captcha.captcha import captcha

class ImageCodeView(View):
    def get(self, request, uuid):
        # 生成图形验证码
        text, image = captcha.generate_captcha()
        # 使用配置的redis数据库的别名,创建连接到redis的对象
        redis_conn = get_redis_connection('verify_code')
        # redis_conn.setex('key', '过期时间', 'value')
        redis_conn.setex('img_%s' % uuid, 300, text) # 有效时间是300秒
        # 响应图形验证码: image/jpg
        return http.HttpResponse(image, content_type='image/jpg')

トータルルーティングとサブルーティングを設定する

meiduo_mall.urls.py

urlpatterns = [
    ...
    path(r'', include('apps.verifications.urls')),
]

verify.urls.py

urlpatterns = [
	...
	path('image_codes/<uuid:uuid>/', views.ImageCodeView.as_view()),
]

おすすめ

転載: blog.csdn.net/qq_39147299/article/details/108408899