如何在 Django 网站中添加验证码?


验证码是现代网站验证的一种常用方法;它非常酷,几乎每个网站都在使用它。您可以使用 Google 验证码,但应用起来确实很麻烦;然而,在 Django 中,我们有更简单的方法。

在这篇文章中,我们将学习如何在 Django 网站中创建验证码。让我们开始吧。

示例

首先,创建一个 Django 项目和一个应用。

现在安装 **django-simple-captcha** 库:

pip install django-simple-captcha

进入 **settings.py** 文件,在 INSTALLED_APPS 中添加你的应用和 "captcha":

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   "captchaproject", #My app name
   "captcha" # the module name
]

这将添加验证码作为一个应用。

在项目的根目录中,添加以下几行:

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
   path('admin/', admin.site.urls),
   path('', include("captchaproject.urls")),
   path('/captcha',include("captcha.urls"))
]

这将为我的应用和验证码验证的 URL 添加 **url**。

在应用的主目录中,创建一个 **forms.py** 文件并输入:

from django import forms
from captcha.fields import CaptchaField

class MyForm(forms.Form):
   captcha=CaptchaField()

在这里,我们创建了一个带有验证码字段的表单。

不要忘记运行 **"python manage.py migrate"**

现在在应用的 **view.py** 中,添加以下几行:

from django.shortcuts import render
from .forms import MyForm
# Create your views here.
def home(request):
   if request.method=="POST":
      form=MyForm(request.POST)
      if form.is_valid():
         print("success")
      else:
         print("fail")
   form=MyForm()
   return render(request,"home.html",{"form":form})

我们在主页视图中渲染表单,在 POST 处理程序中,我们验证表单,或者说是验证码,验证后,我们打印结果。

在 **templates** 目录(你添加所有渲染的 HTML 或 CSS 文件的目录,我假设你已经知道并配置好了它)中创建一个 HTML 文件,并添加以下几行:

<!DOCTYPE html>
<html>
   <head>
      <title>Tut</title>
   </head>
   <body>
      <form method="POST" novalidate>
         {%csrf_token%}
         {{form.captcha}}
         <input type="submit" value="submit">
      </form>
   </body>
</html>

这是我们渲染验证码表单的前端。

我们完成了;现在您可以检查输出。

输出

更新于:2021年8月26日

3K+ 次浏览

启动你的 职业生涯

完成课程获得认证

开始学习
广告