파이썬 정규식

홍태경·2021년 4월 14일
0

새로 정규식 전용 파일을 만들어주는것을 추천한다.

utils.py

import re
import jwt
import json
import bcrypt

from django.http.response import JsonResponse
from my_settings import SECRET, ALGORITHM
from users.models import User

def passwordvalidator(password):
validator = re.compile('^(?=.[a-zA-Z])(?=.[0-9])(?=.[!@#$%^&
-])(\S){8,16}$')
return validator.match(password)

return validator.match(password)

def emailvalidator(email):
validator = re.compile('^[a-zA-Z0-9+-
]+@[a-z]+.[a-z]+')
return validator.match(email)

def phone_validator(phone):
validator = re.compile('^\d{9,11}$')
return validator.match(phone)

데코레이션

def login_decorator(func):
def wrapper(self, request, args, **kwargs):
try:
access_token = request.headers.get('Authorization', None)
if not access_token:
return JsonResponse({'MESSAGE' : 'UNAUTHORIZED ACCESS'}, status=401)
payload = jwt.decode(access_token, SECRET, ALGORITHM)
if not User.objects.filter(id=payload['user_id']):
return JsonResponse({'MESSAGE' : 'USER NOT FOUND'}, status=404)
request.user = User.objects.get(id=payload['user_id'])
return func(self, request,
args, **kwargs)
except jwt.DecodeError:
return JsonResponse({'MESSAGE' : 'INVALID TOKEN'}, status=400)
return wrapper

('^(?=.*[a-zA-Z])

'^ = 시작
(?=.[영문]) = 영문 정규화
(?=.
[0-9]) = 숫자 정규화
(?=.[!@#$%^&_-]) = 특수문자 정규화
(\S){8,16}$') = 8자 이상 16자 미만

return validator.match(password) (일치하면 True 아니면 False)

profile
나의 에고를 인정하고 사랑하자

0개의 댓글