我想使用此处找到的 Django Simple Captcha 在我的 django 登录表单上添加验证码:http://code.google.com/p/django-simple-captcha/
如果您创建一个新表单,这非常有用,但我使用的是 django 附带的 django.contrib.auth.forms。知道如何使用现有的 django auth 视图或任何方式来实现验证码吗?谢谢你! 请不要建议使用 Google reCaptcha。
我的网址.py
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login')
,...
]
我的登录.html
<form class="fadeIn second" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary"> Login </button>
</form>
我的表格.py
from captcha.fields import CaptchaField
class MyFormCaptcha(forms.Form):
captcha = CaptchaField()
这个视频和这个GitHub项目解决了我的问题。您可以根据您的需求自定义项目代码。对我来说如下。
我的网址.py
urlpatterns = [
...
path('captcha/',include('captcha.urls')),
path('submit',submit,name='submit')
]
我的表格.py
from captcha.fields import CaptchaField
class MyForm(forms.Form):
captcha=CaptchaField()
我的登录.html
<form action="/submit" method="post">
{% csrf_token %}
<div>
<label for="fullname">Full Name</label>
<input type="text" id="fullname" name="fullname">
</div>
<br>
<div>
<label for="email">Email</label>
<input type="text" id="email" name="email">
</div> <br>
{{form.captcha}}
<button type="submit">Submit</button>
</form>
我的views.py 如何登录用户?
from django.contrib.auth import authenticate, login
def test(request):
form=MyForm()
return render(request,'captcha/home.html',{'form':form})
def submit(request):
if request.method == 'POST':
form=MyForm(request.POST)
if form.is_valid():
name=request.POST['fullname']
email=request.POST['email']
print('success')
print(name)
print(email)
user = authenticate(request,username=username,password=password)
if user is not None:
login(request, user)
return redirect('/homepage') # Redirect to a success page.
else:
# Return an 'invalid login' error message.
print('fail')
messages.success( request,f 'login failed! username or passwoed is wrong!'
return redirect('login')
这不再起作用了,这意味着我的环境不被识别,有人知道这个问题吗
从 captcha.fields 导入 CaptchaField