如何在 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>
这是我们渲染验证码表单的前端。
我们完成了;现在您可以检查输出。
输出
广告