recaptcha 는 악의적인 공격을 막기 위한 도구입니다. 구글에서 제공하며 사진, 글자 등으로 로봇과 사람을 구별합니다.
https://www.google.com/recaptcha/ 에서 확인 가능합니다.
1. views.py 설정
django 에서 recaptcha를 쓰려면 django의 views.py 에서 사용하면 됩니다.
url을 이용해서 request와 response를 다뤄야 하므로 몇 가지를 import해서 불러옵니다.
import urllib from urllib.parse import urlparse | cs |
urllib은 파이썬에서 제공하는 url관련 패키지입니다. urlparse는 그 중에서도 url을 바탕으로 파싱하는 작업을 수행하는 모듈입니다.
이렇게 쓸 도구를 불러와서 서버쪽에서 recaptcha와 데이터를 주고받아서 판단하면 됩니다.
가입은 구글에서 다른 글들을 검색하면 잘 설명되어 있습니다.
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 } recaptcha_data = urllib.parse.urlencode(values).encode() recaptcha_req = urllib.request.Request(url, data=recaptcha_data) recaptcha_response = urllib.request.urlopen(recaptcha_req) recaptcha_result = json.loads(recaptcha_response.read().decode()) if not recaptcha_result['success']: | cs |
여기서 settings.GOOGLE_RECAPTCHA_SECRET_KEY 자리에 각자 부여받은 키를 쓰면 됩니다.
개발용 서버에서 이용하고 싶을 땐 127.0.0.1을 쓰면 자연스럽게 이용가능합니다.
2. html 템플릿 설정
html 태그에선 header등에 <script></script>를 써 주고 구글이 알려준 코드를 쓰면 됩니다.
<script src='https://www.google.com/recaptcha/api.js'></script> | cs |
이것을 써주면 됩니다.
<div class="g-recaptcha" data-sitekey="some value that google gave to you"></div> | cs |
html 템플릿에는 위의 div를 써주면 recaptcha를 유저가 클라이언트에서 볼 수 있고 클릭할 수 있게 됩니다.
'Python' 카테고리의 다른 글
[django] django channels 사용법 (0) | 2018.02.10 |
---|---|
[django] django에서 DoesNotExist와 인증 Backend 만들기 (0) | 2018.02.07 |
[django] 간단한 웹 게임 프로그램 작성에 필요한 설정 (0) | 2018.02.04 |
[django] GeoDjango 와 django-rest-framework 연동 (0) | 2018.02.04 |
[django] GeoDjango를 쓰기 위한 model과 view 설정 (0) | 2018.02.03 |