π¦ λ΄μΌλ°°μμΊ ν/TIL(Today I Learned)
-
μ΄λ²μλ serializer λ₯Ό μμ©νλ μ¬ν κ³Όμ μ λ°μλ€. - permissions.py λ‘ κ΄λ¦¬μ λ° μ¬μ©μμ κΆνμ λΆμ¬νκ³ - μν©μ λ°λ₯Έ 쑰건μ μ μν΄μ μ‘°ν λ° μμ κΆνμ λΆλ¦¬ν μ μμ. - ex) 7μΌμ΄ μ§λμ§ μμ μ¬μ©μλ κ²μκΈ μμ± λΆκ° λ± λ¨ μκ°μ λ무λ λ§μ μ 보λμ μ΅λνλ €λ λκ° μ₯κ° λκΈ° μμνλ€.. κ³μ μ£Όμ νλ €λ λ°μ΄ν°λ₯Ό λλ§μ λ°©λ²μΌλ‘ μ‘°κΈμ©.. μ‘°κΈμ© μννκ³ μ νλ€.. λΆλ 체νμ§ λ§κ³ , μ ν‘μν μ μκΈ°λ₯Ό... μλ¬ λ ΈνΈ λλΆλΆ μ€νλ‘ μΈν μλ¬.. λ―ΈμΉκ²λ€.. 4μΌμ°¨ κ³Όμ μ¬ν 1. admin νμ΄μ§μ user adminμ λ±λ‘νκ³ , userprofile ν μ΄λΈμ user admin νμ΄μ§μμ κ°μ΄ λ³΄κ³ μ€μ ν μ μλλ‘ ν΄μ£ΌμΈμ class UserAdm..
TIL_220620_DRF κ°μμ΄λ²μλ serializer λ₯Ό μμ©νλ μ¬ν κ³Όμ μ λ°μλ€. - permissions.py λ‘ κ΄λ¦¬μ λ° μ¬μ©μμ κΆνμ λΆμ¬νκ³ - μν©μ λ°λ₯Έ 쑰건μ μ μν΄μ μ‘°ν λ° μμ κΆνμ λΆλ¦¬ν μ μμ. - ex) 7μΌμ΄ μ§λμ§ μμ μ¬μ©μλ κ²μκΈ μμ± λΆκ° λ± λ¨ μκ°μ λ무λ λ§μ μ 보λμ μ΅λνλ €λ λκ° μ₯κ° λκΈ° μμνλ€.. κ³μ μ£Όμ νλ €λ λ°μ΄ν°λ₯Ό λλ§μ λ°©λ²μΌλ‘ μ‘°κΈμ©.. μ‘°κΈμ© μννκ³ μ νλ€.. λΆλ 체νμ§ λ§κ³ , μ ν‘μν μ μκΈ°λ₯Ό... μλ¬ λ ΈνΈ λλΆλΆ μ€νλ‘ μΈν μλ¬.. λ―ΈμΉκ²λ€.. 4μΌμ°¨ κ³Όμ μ¬ν 1. admin νμ΄μ§μ user adminμ λ±λ‘νκ³ , userprofile ν μ΄λΈμ user admin νμ΄μ§μμ κ°μ΄ λ³΄κ³ μ€μ ν μ μλλ‘ ν΄μ£ΌμΈμ class UserAdm..
2023.01.01 -
DRF μ κ½ Serializer μ λν΄μ λ°°μ°κ³ , Serializer λ‘ κ³Όμ λ₯Ό λ°μλ€. μ΄λμ λ μ΄ν΄λ₯Ό νλ€κ³ μκ°νλλ°, μκ°λ³΄λ€ μμκ³Ό λ€λ₯Έ Serializer μΆκ° λΆλΆμ λν΄μ μ λλ‘ μ΄ν΄νμ§ λͺ»ν λΆλΆμ΄ μμ΄ λλ΄ κ³Όμ λ₯Ό μμ±ν μ μμλ€.. κ·Έλλ ν΄μ€ κ°μλ₯Ό ν΅ν΄ λ§μ§λ§κΉμ§ μ°λ¨Ήν΄λ³΄μλ€. μλ¬ λ ΈνΈ μ¬μ€ μλ¬λΌκΈ° 보λ€λ λ΄κ° μ€μν λ΄μ©μ΄μ§λ§, λ λ² μ€μνμ§ μκΈ° μν΄ μ μ΄λλ€. μμΈ : 1) νμμ΄ν μ μμ μλ‘μ΄ νλ‘μ νΈ μμ±νκ³ μμ. 2) νμμ΄ν 2λ² λ¬Έμ μμ USERNAME_FIELD λ₯Ό λ³κ²½ν΄λ κ³μ λ°λμ§ μλ κΈ°μ΄ν νμ 3) μλ¬ μ½λλ λ¨μ§ μκ³ κ³μ μ¬μ©μ μ΄λ¦λΆν° μμ±νλΌκ³ ν¨. ν΄κ²° : AUTH_USER_MODEL = 'user.User' κ³μ λͺ¨λΈμ μμ μ΄..
TIL_220617_DRF κ°μDRF μ κ½ Serializer μ λν΄μ λ°°μ°κ³ , Serializer λ‘ κ³Όμ λ₯Ό λ°μλ€. μ΄λμ λ μ΄ν΄λ₯Ό νλ€κ³ μκ°νλλ°, μκ°λ³΄λ€ μμκ³Ό λ€λ₯Έ Serializer μΆκ° λΆλΆμ λν΄μ μ λλ‘ μ΄ν΄νμ§ λͺ»ν λΆλΆμ΄ μμ΄ λλ΄ κ³Όμ λ₯Ό μμ±ν μ μμλ€.. κ·Έλλ ν΄μ€ κ°μλ₯Ό ν΅ν΄ λ§μ§λ§κΉμ§ μ°λ¨Ήν΄λ³΄μλ€. μλ¬ λ ΈνΈ μ¬μ€ μλ¬λΌκΈ° 보λ€λ λ΄κ° μ€μν λ΄μ©μ΄μ§λ§, λ λ² μ€μνμ§ μκΈ° μν΄ μ μ΄λλ€. μμΈ : 1) νμμ΄ν μ μμ μλ‘μ΄ νλ‘μ νΈ μμ±νκ³ μμ. 2) νμμ΄ν 2λ² λ¬Έμ μμ USERNAME_FIELD λ₯Ό λ³κ²½ν΄λ κ³μ λ°λμ§ μλ κΈ°μ΄ν νμ 3) μλ¬ μ½λλ λ¨μ§ μκ³ κ³μ μ¬μ©μ μ΄λ¦λΆν° μμ±νλΌκ³ ν¨. ν΄κ²° : AUTH_USER_MODEL = 'user.User' κ³μ λͺ¨λΈμ μμ μ΄..
2023.01.01 -
DRF κ°μ 본격μ μΌλ‘ λ£κ² λ 3μΌμ°¨ κ³Όμ μ λ΄μ©.. μ΄μ°.. μ μ μ λͺ»μ°¨λ¦°λ€. μκ°λ³΄λ€ μ¬μ€νκ³ λ₯ν μ₯κ³ μ μΈκ³ κ·Έλ¦¬κ³ λ무 νΈλ¦¬ν κΈ°λ₯μλ€ μ΄λ»κ²λ νμ©νκΈ° μν λ°λ²λ₯.. λ΄κ° μ΄ λͺ¨λ κΈ°λ₯λ€μ μ λ€λ£° μ μμκΉ.. λ μμ νμ΄ν .. μλ¬ λ ΈνΈ μ¬μ€ μλ¬λΌκΈ° 보λ€λ λ΄κ° μ€μν λ΄μ©μ΄μ§λ§, λ λ² μ€μνμ§ μκΈ° μν΄ μ μ΄λλ€. μμΈ : TypeError: Cannot read properties of undefined (reading 'value') λ΄μ© : ν¬μ€νΈλ§¨ μ λ°μνλ μλ¬ ν΄κ²° : path('login/', views."UserAPIView".as_view()), λ΄μ© : urls.py μ κ²½λ‘μ μλ ν΄λμ€ λͺ μ€νλ‘ μΈν μλ¬ 3μΌμ°¨ κ³Όμ 1. Django νλ‘μ νΈλ₯Ό μμ±νκ³ ..
TIL_220616_DRF κ°μDRF κ°μ 본격μ μΌλ‘ λ£κ² λ 3μΌμ°¨ κ³Όμ μ λ΄μ©.. μ΄μ°.. μ μ μ λͺ»μ°¨λ¦°λ€. μκ°λ³΄λ€ μ¬μ€νκ³ λ₯ν μ₯κ³ μ μΈκ³ κ·Έλ¦¬κ³ λ무 νΈλ¦¬ν κΈ°λ₯μλ€ μ΄λ»κ²λ νμ©νκΈ° μν λ°λ²λ₯.. λ΄κ° μ΄ λͺ¨λ κΈ°λ₯λ€μ μ λ€λ£° μ μμκΉ.. λ μμ νμ΄ν .. μλ¬ λ ΈνΈ μ¬μ€ μλ¬λΌκΈ° 보λ€λ λ΄κ° μ€μν λ΄μ©μ΄μ§λ§, λ λ² μ€μνμ§ μκΈ° μν΄ μ μ΄λλ€. μμΈ : TypeError: Cannot read properties of undefined (reading 'value') λ΄μ© : ν¬μ€νΈλ§¨ μ λ°μνλ μλ¬ ν΄κ²° : path('login/', views."UserAPIView".as_view()), λ΄μ© : urls.py μ κ²½λ‘μ μλ ν΄λμ€ λͺ μ€νλ‘ μΈν μλ¬ 3μΌμ°¨ κ³Όμ 1. Django νλ‘μ νΈλ₯Ό μμ±νκ³ ..
2023.01.01 -
django 1~2μΌμ°¨ κ³Όμ (1) args, kwargsλ₯Ό μ¬μ©νλ μμ μ½λ μ§λ³΄κΈ° *args : κ°λ³ μΈμ (ν¨μμ μΈμλ₯Ό λͺ κ° λ°μμ§ λͺ¨λ₯΄λ κ²½μ°) - μ΄κΈ° λ‘μ§(μ§μ μ§λ³Έ κ²) def test_1(*args): print(args) return args sample_list = [1, 2, 3, 4, 5] number = test_1(*sample_list) for i in number: print(i + 1) - κ°μ λ‘μ§(ꡬκΈλ§) def test_1(*args): result = 0 for i in args: result += i # result = 1 # result = 1 + 2 # result = 1 + 2 + 3 # result = 1 + 2 + 3 + 33 print(result)..
TIL_220615_DRF κ°μdjango 1~2μΌμ°¨ κ³Όμ (1) args, kwargsλ₯Ό μ¬μ©νλ μμ μ½λ μ§λ³΄κΈ° *args : κ°λ³ μΈμ (ν¨μμ μΈμλ₯Ό λͺ κ° λ°μμ§ λͺ¨λ₯΄λ κ²½μ°) - μ΄κΈ° λ‘μ§(μ§μ μ§λ³Έ κ²) def test_1(*args): print(args) return args sample_list = [1, 2, 3, 4, 5] number = test_1(*sample_list) for i in number: print(i + 1) - κ°μ λ‘μ§(ꡬκΈλ§) def test_1(*args): result = 0 for i in args: result += i # result = 1 # result = 1 + 2 # result = 1 + 2 + 3 # result = 1 + 2 + 3 + 33 print(result)..
2023.01.01 -
κΈΈλ©΄μλ 짧μλ 10μΌκ°μ django ν νλ‘μ νΈκ° λμ΄ λ¬λ€. λ§μ΄ μμ¬μ λ μ λ μμκ³ , μΆ©λΆν μλκ³Ό λ μμ μ€μ€λ‘ μ λ§ μ΄μ¬ν νλ? λΌλ μκ°μ΄ λλ μκ°μ΄μλ€. λ λλ¨ν μΊ νΌ μ¬λλ€μ μλμ νμΈνλ©΄μ λκΈ°λΆμ¬λ λ°μ§λ§, κ·Έλ§νΌμ΄λ λ°λΌκ°μ§ λͺ»νλ λ΄ μμ μκ² μ€λ§ν μΌμ΄ μ¬λ¬λ² μμλ€. κ·Έλλ.. κ·Έλλ§ λ€νμ΄λΌλ©΄ λλ ν¬κΈ°νμ§ μμκ³ , μ±μ·¨κ°μ μ»μκ³ , μ¬λ―Έλ₯Ό μ»μλ€. μ΄ λ€μμ λλ λ μ¬λ―Έμκ² μ¦κΈ°κ³ μλ λ μμ μ κΏκΎΈλ©° μ΄μ¬ν ν΄λ³΄κ³ μ νλ€. KPT νκ³ KEEP νμ μ‘°κΈ λ μμΈν μμ΄μ΄ νλ μ μμ±. (μμ μ½λ ν¬ν¨) νλ©΄ 곡μ λ₯Ό ν΅ν΄ μ¦μμμ μν©μ 곡μ νκ³ ν¨κ» νμΈ μ νλ‘μ νΈλ³΄λ€ ν₯μλ μμ€μ git μ¬μ© (λΆλ΄ μλ λ³ν©) μ κ·Ήμ μΈ νμ νμ©(νν°λμκ² κ°κΈ° μ ..
TIL_220614_ν νλ‘μ νΈ djangoκΈΈλ©΄μλ 짧μλ 10μΌκ°μ django ν νλ‘μ νΈκ° λμ΄ λ¬λ€. λ§μ΄ μμ¬μ λ μ λ μμκ³ , μΆ©λΆν μλκ³Ό λ μμ μ€μ€λ‘ μ λ§ μ΄μ¬ν νλ? λΌλ μκ°μ΄ λλ μκ°μ΄μλ€. λ λλ¨ν μΊ νΌ μ¬λλ€μ μλμ νμΈνλ©΄μ λκΈ°λΆμ¬λ λ°μ§λ§, κ·Έλ§νΌμ΄λ λ°λΌκ°μ§ λͺ»νλ λ΄ μμ μκ² μ€λ§ν μΌμ΄ μ¬λ¬λ² μμλ€. κ·Έλλ.. κ·Έλλ§ λ€νμ΄λΌλ©΄ λλ ν¬κΈ°νμ§ μμκ³ , μ±μ·¨κ°μ μ»μκ³ , μ¬λ―Έλ₯Ό μ»μλ€. μ΄ λ€μμ λλ λ μ¬λ―Έμκ² μ¦κΈ°κ³ μλ λ μμ μ κΏκΎΈλ©° μ΄μ¬ν ν΄λ³΄κ³ μ νλ€. KPT νκ³ KEEP νμ μ‘°κΈ λ μμΈν μμ΄μ΄ νλ μ μμ±. (μμ μ½λ ν¬ν¨) νλ©΄ 곡μ λ₯Ό ν΅ν΄ μ¦μμμ μν©μ 곡μ νκ³ ν¨κ» νμΈ μ νλ‘μ νΈλ³΄λ€ ν₯μλ μμ€μ git μ¬μ© (λΆλ΄ μλ λ³ν©) μ κ·Ήμ μΈ νμ νμ©(νν°λμκ² κ°κΈ° μ ..
2023.01.01 -
μ΄λ² django ν νλ‘μ νΈμμλ κΈ°νμ κΈ°λ°μΌλ‘ μμΈ μΆμ² μ¬μ΄νΈλ₯Ό λ§λ€κ² λμλ€. λλ μ΄λ² 맑μ κΈ°λ₯μΌλ‘λ [x] μ° λͺ©λ‘ 보μ¬μ£ΌκΈ° [x] μ° μμΈ ν΄λ¦ μ μμΈνμ΄μ§ μ΄λ [x] 리뷰 λͺ©λ‘ 보μ¬μ£ΌκΈ° [x] 리뷰 λͺ©λ‘ ν΄λ¦ μ μμΈνμ΄μ§ μ΄λ [ ] λͺ©λ‘ 리μ€νΈ μμ (μ΅μ μ, γ γ γ μ λ±) [x] μμΈ ν΄λ¦ μ ν΄λΉ μμΈνμ΄μ§ μ΄λ [x] μ°νκΈ° κΈ°λ₯ [x] μ°νκΈ° μ·¨μ μμ κΈ°λ₯μ ꡬννκ² λμλ€. μ° λͺ©λ‘ 보μ¬μ£ΌκΈ° - μ¬μ©μμ id λ₯Ό λ°μ UserModel λ‘ λμ‘°νμ¬ user λ³μμ μ μνκ³ ν΄λΉ μ¬μ©μμ μμΈ μμ리μ€νΈ(ManyToManyField related_name=wine_wish) μ 보λ₯Ό wine_list λ³μμ μ μνλ€. - return render λ‘ λ³΄λΌ μ£Όμμ wine_..
TIL_220613_ν νλ‘μ νΈ djangoμ΄λ² django ν νλ‘μ νΈμμλ κΈ°νμ κΈ°λ°μΌλ‘ μμΈ μΆμ² μ¬μ΄νΈλ₯Ό λ§λ€κ² λμλ€. λλ μ΄λ² 맑μ κΈ°λ₯μΌλ‘λ [x] μ° λͺ©λ‘ 보μ¬μ£ΌκΈ° [x] μ° μμΈ ν΄λ¦ μ μμΈνμ΄μ§ μ΄λ [x] 리뷰 λͺ©λ‘ 보μ¬μ£ΌκΈ° [x] 리뷰 λͺ©λ‘ ν΄λ¦ μ μμΈνμ΄μ§ μ΄λ [ ] λͺ©λ‘ 리μ€νΈ μμ (μ΅μ μ, γ γ γ μ λ±) [x] μμΈ ν΄λ¦ μ ν΄λΉ μμΈνμ΄μ§ μ΄λ [x] μ°νκΈ° κΈ°λ₯ [x] μ°νκΈ° μ·¨μ μμ κΈ°λ₯μ ꡬννκ² λμλ€. μ° λͺ©λ‘ 보μ¬μ£ΌκΈ° - μ¬μ©μμ id λ₯Ό λ°μ UserModel λ‘ λμ‘°νμ¬ user λ³μμ μ μνκ³ ν΄λΉ μ¬μ©μμ μμΈ μμ리μ€νΈ(ManyToManyField related_name=wine_wish) μ 보λ₯Ό wine_list λ³μμ μ μνλ€. - return render λ‘ λ³΄λΌ μ£Όμμ wine_..
2023.01.01 -
LIFE IS TOO SHORT TO DRINK BAD WINE ' μ’μ μμΈ μλ €μ€κΉ? ’ “ λμ ν¬λμ£Όλ₯Ό λ§μκΈ°μλ μΈμμ λ무λ μ§§λ€ ” 1. ν μκ° 1) ν λͺ : μ¬λ€λ¦¬ 2) νλ‘μ νΈ λͺ : LADDER TO WIINE 3) ν μ μ΄λ¦ μν git / blog μκ΄μ© μμΈνμ΄μ§ 리뷰 κ΄λ¦¬(CRUD) μ° κ΄λ¦¬ https://github.com/angar2 https://angar2.tistory.com/ λμ±κ·Ό λ©μΈνμ΄μ§ νλ‘μ° κ΄λ¦¬ SG-Marco (github.com) sg-marco.github.io μ΄λν λ¨Έμ λ¬λ μ ν λΆλ¬μ€κΈ°(μΆμ²ν¬ν¨) κ°μΈνμ΄μ§ https://github.com/DHL68 https://atommi.tistory.com/ νκ±΄ν¬ νμκ°μ / λ‘κ·ΈμΈ https://..
TIL_220602_ν νλ‘μ νΈ DjangoLIFE IS TOO SHORT TO DRINK BAD WINE ' μ’μ μμΈ μλ €μ€κΉ? ’ “ λμ ν¬λμ£Όλ₯Ό λ§μκΈ°μλ μΈμμ λ무λ μ§§λ€ ” 1. ν μκ° 1) ν λͺ : μ¬λ€λ¦¬ 2) νλ‘μ νΈ λͺ : LADDER TO WIINE 3) ν μ μ΄λ¦ μν git / blog μκ΄μ© μμΈνμ΄μ§ 리뷰 κ΄λ¦¬(CRUD) μ° κ΄λ¦¬ https://github.com/angar2 https://angar2.tistory.com/ λμ±κ·Ό λ©μΈνμ΄μ§ νλ‘μ° κ΄λ¦¬ SG-Marco (github.com) sg-marco.github.io μ΄λν λ¨Έμ λ¬λ μ ν λΆλ¬μ€κΈ°(μΆμ²ν¬ν¨) κ°μΈνμ΄μ§ https://github.com/DHL68 https://atommi.tistory.com/ νκ±΄ν¬ νμκ°μ / λ‘κ·ΈμΈ https://..
2023.01.01 -
Django μ κΈ°λ³Έ user λͺ¨λΈ(auth_user) μ¬μ©νκΈ° (μμ) 1) μμνκΈ° μν AbstractUser μν¬νΈ from django.db import models from django.contrib.auth.models import AbstractUser 2) UserModel μ μμ - κΈ°λ³Έ λͺ¨λΈμ μλ bio λ°μ΄ν° μΆκ° # Create your models here. class UserModel(AbstractUser): class Meta: db_table = "my_user" # μ¬κΈ°λ ν μ΄λΈ μ΄λ¦μ΄μμ! κΌ κΈ°μ΅ ν΄ μ£ΌμΈμ! bio = models.TextField(max_length=500, blank=True) 3) νλ‘μ νΈμ±μ settings.py μ κΈ°λ³Έ μΈμ¦κ³Όμ μ μ© -..
TIL_220530_Django κΈ°μ΄Django μ κΈ°λ³Έ user λͺ¨λΈ(auth_user) μ¬μ©νκΈ° (μμ) 1) μμνκΈ° μν AbstractUser μν¬νΈ from django.db import models from django.contrib.auth.models import AbstractUser 2) UserModel μ μμ - κΈ°λ³Έ λͺ¨λΈμ μλ bio λ°μ΄ν° μΆκ° # Create your models here. class UserModel(AbstractUser): class Meta: db_table = "my_user" # μ¬κΈ°λ ν μ΄λΈ μ΄λ¦μ΄μμ! κΌ κΈ°μ΅ ν΄ μ£ΌμΈμ! bio = models.TextField(max_length=500, blank=True) 3) νλ‘μ νΈμ±μ settings.py μ κΈ°λ³Έ μΈμ¦κ³Όμ μ μ© -..
2023.01.01