5์ผ์ฐจ๊น์ง ํ์๊ฐ์
, ๋ก๊ทธ์ธ view๋ฅผ ์์ฑํ ํ,
1์ฐจ ํ๋ก์ ํธ ์์ ์ ์ ํด๋ก ํ๋ Westagram ๋ ์์ฑํ ์ฝ๋์์ ํ๋จ๊ณ ์งํํด์ ๋ค๋ฅธ๋ฐฉ์์ผ๋ก๋ ์์ฑํ๊ณ ์ถ์ด์
์ ๋ฒ์ ์ฌ์ฉํด๋ณด์ง ๋ชปํ ValidationError
๋ฅผ ์ถ๊ฐํด์ ๋ฐ๋ก ์์ฑํด๋ณด๊ธฐ๋ก ํ๋ค.
*ํ์๊ฐ์ views.py์ ValidationError ์ถ๊ฐ๋ก ์์ฑํ ๋ด์ฉ๐
*users app์ ์์ฑํ validation.py๐
ํด๋น ํ์ผ์ ํ์๊ฐ์
์ ์ ํจ์ฑ๊ฒ์ฌ์ ๋ํ ์๋ฌ์ฒ๋ฆฌ๋ง ์์ฑ ํ ์์ ์ผ๋ก,
validation.py
ํ์ผ์ core ํด๋์์ ์์ฑํ์ง ์๊ณ , users
ํด๋์ ์์ฑํ์๋ค.
์ด์ , Westagram์ ํ์๊ฐ์
views.py๋ฅผ ์์ฑ ํ์๋,
์ด๋ป๊ฒ ์์ฑํ๊ณ , ์ด๋ค ๋ถ๋ถ์ ๋ค๋ฅด๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋์ง ํ์ธ ํด๋ณด๊ธฐ๋ก ํ์!
์ด๋ฉ์ผ๊ณผ ํจ์ค์๋์ ์ ๊ท์์ ๋ํ ์กฐ๊ฑด๋ฌธ
์ ์ง์ views.py๋ด์ ์์ฑํ์ฌ
๋ฐ๋ก Json
ํ์์ผ๋ก ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ๋ฐํํ์๋ค.
(์๋ ์ฌ์ง์ Westagram ํ์๊ฐ์
views.py์์ ์์ฑํ ์ฝ๋ ์ค์ท ๋ถํ๐)
์ด๋ฒ 1์ฐจ ํ๋ก์ ํธ ๋,
django ํ๋ ์์ํฌ์์ ์ง์ํด์ฃผ๋, django.core.validators๋ชจ๋๊ณผ ์ค๋ฅ๋ฅผ ์ผ๋ถ๋ก ๋ฐ์์ํค๋ raise๋ฅผ ์ด์ฉํด ๋ณด๋๋ก ํ๊ฒ ๋ค.
(์
๋ ฅํ ๊ฐ์ด ValidationError์ ์ผ๋ถ ๊ธฐ์ค์ ์ถฉ์กฑํ์ง ์์ผ๋ฉด Error๋ฅผ ๋ฐ์์ํค๋ ํธ์ถ ๊ฐ๋ฅ์ ์ด์ฉํจ)
์ฒ์์,
import json, re
from django.core.exceptions import ValidationError
def email_check(value):
if re.match('^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$', value) is None:
return JsonResponse({'ERROR' : 'EMAIL_ERROR'}, status=400)
# ์ต์ 8์ ์ด์, ๋ฌธ์, ์ซ์
def password_check(value):
if not re.match("^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$", value):
return JsonResponse({'ERROR' : 'password_ERROR'}, status=400)
๋ผ๊ณ ์์ฑํ์๋ค.
์ฌ๊ธฐ์ <์ ๊น!!>,
ํด๋น ํ์ผ์ ์์ฑํ return์ด ํ์๊ฐ์
views.py์์ return ๋ด์ฉ์ ๋ฐํํ์ง ๋ชปํ๋ ์๋ฌ๊ฐ ๋ฐ์๋ ๊ฒ์ด๋ค!!
Jsonํ์์ผ๋ก return์ด ์๋, raise๋ฅผ ์ด์ฉํด์ ์ผ๋ถ๋ก ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ณ , ํด๋น ์๋ฌ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๋๋ฅผ ์์ ํ์ฌ ์์ฑํด๋๋ก ํ๊ฒ ๋ค.
import re
from django.core.exceptions import ValidationError
def email_check(value):
if re.match('^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$', value) is None:
raise ValidationError('EMAIL_ERROR')
# ์ต์ 8์ ์ด์, ๋ฌธ์, ์ซ์
def password_check(value):
if not re.match("^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$", value):
raise ValidationError('PASSWORD_ERROR')
์ด๋ฉ์ผ ์ ํจ์ฑ๊ฒ์ฌํ๋ ํจ์์ธ email_check์
ํจ์ค์๋ ์ ํจ์ฑ๊ฒ์ฌํ๋ ํจ์์ธ password_check๋ฅผ ์ง์ ์ฌ์ฉํ๊ธฐ ์ํด,
views.py
์ ํด๋น ํ์ผ์ importํ์ฌ, ValidationError๋ก ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ๋ฐํํ๋๋ก ํ๊ฒ ๋ค.
๊ฐ์ users ์ผ๊ฒฝ์ฐ,
from users.validation import email_check, password_check
๊ฐ ์๋
from .validation import emaiol_check, password_check
๋ผ๊ณ ์์ฑํด๋ ๋ฌด๋ฐฉํ๋ค.
except์์ as ๋ค์ ๋ณ์
๋ฅผ ์ง์ ํ๋ฉด ๋ฐ์ํ ์์ธ์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐ์์ฌ ์ ์์ต๋๋ค.
try:
์คํํ ์ฝ๋
except ์์ธ as ๋ณ์:
์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌํ๋ ์ฝ๋