# 安装django-simple-captcha
pip install django-simple-captcha
# settings.py
INSTALLED_APPS = [
# ...
'captcha',
]
# urls.py
from captcha.views import captcha_image
from django.urls import path
from .views import login_view
urlpatterns = [
path('captcha/', captcha_image, name='captcha'),
path('login/', login_view, name='login'),
]
# forms.py
from django import forms
from captcha.fields import CaptchaField
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
captcha = CaptchaField()
# views.py
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from .forms import LoginForm
def login_view(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
captcha = form.cleaned_data['captcha']
if captcha:
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
return redirect('home')
else:
form = LoginForm()
return render(request, 'login.html', {'form': form})