不需要重述

2024-09-28 21:50:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django的初学者。 这是我的代码,但我认为联系人表单中的recaptcha不是必填字段。我的意思是用户可以发送一个反馈,而无需选择Recaptcha。在

视图.py

def contact(request):
    form = FeedbackForm(request.POST or None)
    if form.is_valid(): 

        recaptcha_response = request.POST.get('g-recaptcha-response')
        url = 'https://www.google.com/recaptcha/api/siteverify'
        values = {
            'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
            'response': recaptcha_response
        }
        data = urllib.urlencode(values).encode()
        req =  urllib2.Request(url, data=data)
        response = urllib2.urlopen(req)
        result = json.loads(response.read().decode())
        ''' End reCAPTCHA validation '''

        if result['success']:
            form.save()
            message = u'You have feedback\nName: %s\nEmail: %s\nPhone: %s\nCountry: %s\nFeedback:\n%s' % (
            form.cleaned_data['name'], 
            form.cleaned_data['email'],
            form.cleaned_data['phone'],
            form.cleaned_data['country'],
            form.cleaned_data['feedback'])
            try:
                send_mail('NEW FEEDBACK', message, '', settings.DEFAULT_FROM_EMAIL) # to admin
                send_mail('THANK YOU for contacting us', 'We will be back to you promptly.', '', [form.cleaned_data['email'],]) # to user
                messages.info(request, 'SUCCESS! Your message has been sent!')
                form = FeedbackForm()
            except:
                messages.info(request, 'Sorry, can\'t send feedback right now.')
        else:
            messages.error(request, 'Invalid reCAPTCHA. Please try again.') 

    return render(request, 'contact.html', {'active_page':'contact','form': form,})

表单.py:

^{pr2}$

Tags: topyformsend表单messagedataresponse