如何在管理登录页面使用Django-simple-captcha?

问题描述 投票:0回答:2

我想使用此处找到的 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()
django django-views django-forms django-authentication
2个回答
0
投票

这个视频这个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')
      

0
投票

这不再起作用了,这意味着我的环境不被识别,有人知道这个问题吗

从 captcha.fields 导入 CaptchaField

© www.soinside.com 2019 - 2024. All rights reserved.