Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Html:
- <script>
- grecaptcha.ready(function() {
- grecaptcha.execute(<KEY>, {action: ''})
- .then(function(token) {
- ginput = document.createElement('input');
- ginput.type = "hidden";
- ginput.name = "g-recaptcha-response";
- ginput.value = token;
- document.getElementById("cform").appendChild(ginput);
- });
- });
- </script>
- <form id='cform' role="form" action="" method="post">
- {% csrf_token %}
- {{ form.as_p }}
- <script src='https://www.google.com/recaptcha/api.js?render=<KEY>'></script>
- <div class="g-recaptcha" data-sitekey=<KEY>></div>
- <button type="submit">Submit</button>
- </form>
- Views.py:
- def contact(request):
- form_class = ContactForm
- if request.method == 'POST':
- form = form_class(data=request.POST)
- if form.is_valid():
- recaptcha_response = request.POST.get('g-recaptcha-response')
- url = 'https://www.google.com/recaptcha/api/siteverify'
- payload = {
- 'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
- 'response': recaptcha_response
- }
- data = urllib.parse.urlencode(payload).encode()
- req = urllib.request.Request(url, data=data)
- response = urllib.request.urlopen(req)
- result = json.loads(response.read().decode())
- if (not result['success']) or (not result['action'] == ''):
- messages.error(request, 'Invalid reCAPTCHA. Please try again.')
- contact_name = request.POST.get(
- 'contact_name'
- , '')
- contact_email = request.POST.get(
- 'contact_email'
- , '')
- form_content = request.POST.get('content', '')
- # Email the profile with the
- # contact information
- template = get_template('contact_template.txt')
- context = {
- 'contact_name': contact_name,
- 'contact_email': contact_email,
- 'form_content': form_content,
- }
- content = template.render(context)
- email = EmailMessage(
- "New contact form submission",
- content,
- "Your website" +'',
- ['GMAIL_EMAIL'],
- headers = {'Reply-To': contact_email }
- )
- email.send()
- messages.info(request, "Success")
- return render(request, 'contact.html', {
- 'form': form_class,
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement