[Spring] DI(์˜์กด์„ฑ ์ฃผ์ž…): ์™œ ํ•„์š”ํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?
ยท
๐Ÿ’ชBackend/Spring
์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ(Spring Framework)์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋Š” DI(Dependency Injection, ์˜์กด์„ฑ ์ฃผ์ž…)์ž…๋‹ˆ๋‹ค. DI๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” DI๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์™œ ํ•„์š”ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ์Šคํ”„๋ง์—์„œ DI๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! 1. ์˜์กด์„ฑ(Dependency)์ด๋ž€?ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ด€๊ณ„๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.์ฆ‰, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์•ž์œผ๋กœ ์˜์กด๊ณผ ์‚ฌ์šฉ์„ ๋™์ผํ•œ ์˜๋ฏธ๋กœ ์–ธ๊ธ‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! (feat. ์†ก์•„์Œค)  ์˜ˆ์ œ๋ฅผ ๋ณด์ž๋ฉด,public class ProductController { private ProductService productServ..
Django๋กœ Pinterest ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ : ์„น์…˜ 3. Authentication (27~29๊ฐ•)
ยท
๐Ÿ’ชBackend/Django
#27 Authentication ์ธ์ฆ์‹œ์Šคํ…œ ๊ตฌ์ถ• authentication ์šฐ๋ฆฌ๊ฐ€ account๋ฅผ ๋งŒ๋“  ์ด์œ ? : ์•„๋ฌด๋‚˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ˆ„๊ฐ€ ๋ˆ„๊ตฐ์ง€ ํ™•์ธ ํ•„์š”. view ์ˆ˜์ • views์—์„œ request.user.is_authenticated ๋กœ ๋กœ๊ทธ์ธ๋˜์–ด์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋™์ž‘ ํ•˜๋„๋ก ์ˆ˜์ • ๋กœ๊ทธ์ธ ์•ˆ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ, ์œ„์ฒ˜๋Ÿผ ๋กœ๊ทธ์ธ์ฐฝ์œผ๋กœ redirect ๋จ class์•ˆ์— ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•ด์„œ get ๋‚ด๋ถ€ ํ–‰๋™์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Œ. def get(self, *args, **kwargs): if self.request.user.is_authenticated: return super().get(*args,**kwargs) else: return HttpResponseRedirec..
Django๋กœ Pinterest ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ : ์„น์…˜ 2. Accountapp implementation (21~26๊ฐ•)
ยท
๐Ÿ’ชBackend/Django
์„น์…˜2์—์„œ๋Š” accounapp์˜ crud์™€ login/logout์„ ๊ตฌํ˜„ #21 CreateView๋ฅผ ํ†ตํ•œ ํšŒ์›๊ฐ€์ž… ๊ตฌํ˜„ ํ˜„์žฌ ๊ฐ•์˜๊นŒ์ง€๋Š” ์œ„ ๊ตฌ์กฐ๋„์—์„œ ์žฅ๊ณ  ๋ถ€๋ถ„๋งŒ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ์Œ class AccountCreateView(CreateView): model = User form_class = UserCreationForm success_url = reverse_lazy('accountapp:hello_world') template_name = 'accountapp/create.html' ์ด๋Ÿฐ์‹์œผ๋กœ create view์ด์šฉํ•ด์„œ ํšŒ์›๊ฐ€์ž… ๊ตฌ์ถ• #22 Login/Logout ๊ตฌํ˜„ login๊ณผ logout view๋„ ์žฅ๊ณ ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•ด์คŒ view ์‚ฌ์šฉ์œผ๋กœ url ์ˆ˜์ • path('login/',LoginVi..
Django๋กœ Pinterest ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ : ์„น์…˜ 1. Django Tutorial (19 ~ 20๊ฐ•)
ยท
๐Ÿ’ชBackend/Django
#19 Pycharm ๋””๋ฒ„๊น… ์„ค์ • ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํ• ๋•Œ ์–ด๋””๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋””๋ฒ„๊น…์ด ํ•„์š” ์ด๋ฅผ ์œ„ํ•œ ๋””๋ฒ„๊น… ์„ค์ • ์ง€๊ธˆ ์–ด๋–ค ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ ๊ทธ๋ƒฅ POST๋งŒ ๋ฒ„ํŠผ๋งŒ ๋ˆ„๋ฅธ ํ›„, temp ์—๋Š” ์•„๋ฌด ๊ฐ’ ์•ˆ๋“ค์–ด์žˆ์Œ!! #20 Django์˜ CRUD, Class Based View ์†Œ๊ฐœ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด์„œ ์ธ์ฆ๋œ ์‚ฌ๋žŒ๋งŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก Signup = Create View info = Read Change info = Update Quit = Delete ์žฅ๊ณ ๊ฐ€ CRUD์— ์œ ์šฉ ํฌ๋ฃจ๋“œ๋กœ ์œ ๋ช…ํ•œ ์ด์œ ? ⇒ ์ฟ ๋ฅด๋“œ์— ๋Œ€ํ•œ view๋ฅผ ๋”ฐ๋กœ ์ œ๊ณต!! (class based view) ๋ฐ˜๋Œ€๋กœ function-based view → ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์˜ view, ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ~… ๋„ˆ๋ฌด ๊ธธ์–ด..