[210720 TIL] Django

Choi Rimยท2021๋…„ 7์›” 20์ผ
1

Django

๋ชฉ๋ก ๋ณด๊ธฐ
8/21
post-thumbnail

path

from django.urls import path

from owner.views import OwnersView, DogsView

app_name = 'owner'

urlpatterns = [
    path('owner', OwnersView.as_view()),
    path('dog', DogsView.as_view()),
]
  • ์•ฑ์•ˆ์˜ url ํŒŒ์ผ๋กœ ์ด๋™ํ•œ url์€ ์•ฑ์˜ ๊ฐ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ๋‚˜๋ˆ ์„œ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.
  • path๋ฅผ ๋‚˜๋ˆ ์„œ ์ด๋™์‹œ์ผœ ์ค€๋‹ค.

get

  • get()์€ dictionary์˜ ์š”์†Œ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    ํ•ด๋‹น ์กฐ๊ฑด์˜ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„๋•Œ๋Š” DoesNotExist, ์—ฌ๋Ÿฌ๊ฐœ ์กด์žฌํ• ๋•Œ๋Š” MultipleObjectsReturned ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์—, dot notation์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. .name
Owner.objects.get(id=2)).name  
  • ์›ํ•˜๋Š” ํ•„๋“œ๊ฐ’์„ get method๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

_set

    def get(self, request):
        owners = Owner.objects.all()
        results = []
        for owner in owners:
            dogs = owner.dog_set.all()
            dog_list = []
            for dog in dogs:
                dog_list.append(
                    {
                        'dog_name':dog.name,
                        'dog_age':dog.age,
                    }
                )
            results.append(                  
                {
                    "name" : owner.name, 
                    "email" : owner.email,
                    "age" : owner.age,
                    "dog_info" : dog_list, 
                }
            )
        return JsonResponse({'result':results}, status=200)
  • ํ•œ ๊ฐ•์•„์ง€๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ฃผ์ธ๋งŒ ์ฐธ์กฐํ•˜์ง€๋งŒ, ํ•˜๋‚˜์˜ ์ฃผ์ธ์€ ๋งŽ์€ ๊ฐ•์•„์ง€๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•์•„์ง€๋ฅผ list ํ˜•ํƒœ๋กœ ๋ฌถ์–ด์„œ ์ถœ๋ ฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • results
    • ์ตœ์ข…์ ์œผ๋กœ ์ฃผ์ธ์ด๋ฆ„, ์ด๋ฉ”์ผ, ๋‚˜์ด, ๊ฐ•์•„์ง€ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๋ฆฌ์ŠคํŠธ
      >>> a = owner.dog_set.all()
      >>> print(a)
      <QuerySet [<Dog: Dog object (3)>, <Dog: Dog object (4)>]>
      
    • set์„ ์ด์šฉํ•˜๋ฉด QuerySet ํ˜•ํƒœ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
    • QuerySet์„ ์ด์šฉํ•˜๋ฉด ์•ˆ์˜ ์ธ์Šคํ„ด์Šค ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“์€ ๋นˆ ๋ฆฌ์ŠคํŠธ์— for๋ฌธ์„ ์ด์šฉํ•ด ์ ‘๊ทผํ•œ ๊ฐ•์•„์ง€์˜ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

<์ฐธ๊ณ >

profile
https://rimi0108.github.io/

0๊ฐœ์˜ ๋Œ“๊ธ€