通常、ログインインターフェイスにはグラフィック検証コードがあります。サードパーティのモジュール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()),
]