목록DRF (34)
현제의 현재이야기
자동 메일을 보내주는 schduler가 자꾸 6시 30분에 2006, 'MySQL server has gone away' 가 서버로그에 찍혔다. timeout 시간을 늘리거나,, 패킷 전송 허용량을 늘리는 뻘짓을 추가하였지만 계속 6시 30분에 뻑이 갔다. SET GLOBAL wait_timeout = 28800; 이런 것도 해보고 settings.py 에 이런 것도 추가해보고 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', 'CONN_MAX..
여태 매번 아침에 일어나서 메일 api를 직접 get해서 구독 메일을 회원들에게 뿌렸었다. 너무 귀찮고 DEBUG = TRUE로 해놨어서 누가 자꾸 api를 접속해서 무단으로 메일을 부리는 상황이 포착됐다. 이 얼마나 소름이 돋는가. 정말 악질인게 예전 구독 메일 엔드포인트였던 sendmail/ 을 치는 것을 보아 정말 사람이 접속해서 시도한 것이었다. 난 저때 폰도 안하고 컴도 안하고 있었음. 그래서 귀찮음 해결 + api 접속을 막기 위해서 자동 메일 api를 한시 빨리 개발햇어야 됐다. pip install APScheduler를 해준다. 여러가지 뻘짓하다가(django-cron, schduler 등등..) sudo 및 cron을 사용하지 않아도 되는 스케줄러 발견. django-cron은 로컬에서..
osod osod.swygbro.com 문법 CHECK 기능 원래 계획에는 있었으나 무산되었었던 문법 기능을 추가해보았다. open ai api를 사용해서 최소한의 토큰으로 문법 검사를 해주는 코드를 짜보았다. class GrammarCheckView(APIView): def post(self, request): openai.api_key = '' text = request.data.get('text') if not text: return Response({'response': "", 'ai': "검사할 문장이 없어요!", 'original': "", 'bool': False}, status=status.HTTP_400_BAD_REQUEST) response = openai.Completion.creat..
중복 검사 class UserSerializer(RegisterSerializer): nickname = serializers.CharField(max_length=50) name = serializers.CharField(max_length=50) subscription = serializers.BooleanField(default=False) class Meta: model = User fields = ['email', 'password', 'nickname', 'name', 'subscription'] def validate(self, data): nickname = data['nickname'] if User.objects.filter(nickname=nickname).exists(): raise..
전에 내가 구현했던 구글 로그인은 drf에서 구글로그인이 진행된 것이기에 혼자 구글로그인창 띄우고 구글로부터 인증을 받아 code를 받고, access token을 받고 북치고 장구치고 다했다. 그렇지만 react, 즉 프론트와의 연결을 시도하면 무수한 오류가 뜸과 더불어서 뭔가 잘 안됐다. 10시간가량 삽질한 결과.. react와 연동할 때는 auth_code 혹은 access_token 자체를 프론트엔드로부터 받아오는 작업을 했어야 됐다. 즉 프론트에서 구글 인증을 시도하고 거기에서 나오는 부산물만 백으로 넘겨서 서버 작업을 진행하는 것이다! 아무리 뒤져도 안나오길래 삽질을 오지게 한 결과.. 은근히 소셜 로그인은 access token만 받아오면 끝나는 간단한 문제여따.. 우선 뭐 간단하게 Oaut..
시리얼라이저를 쓰지 않고 post 하는 방법을 깨달았다. class TranslateView(APIView): def post(self, request): text = request.data.get('text') client = translate.Client() result = client.translate(text, target_language='ko') return Response({'translation': result['translatedText']}, status=status.HTTP_200_OK) 그냥 post할 때 {"text": ""}를 해서 보내면 알아서 request.data에 'text'가 추가되어서 보내진다(!) 그리고나서 Response에도 그냥 적어서 보내면 됨. 얼마나 편리한가..