[210719 TIL] Django

Choi Rim·2021년 7월 19일
0

Django

목록 보기
7/21
post-thumbnail

전체적인 Django 흐름

urls.py
from django.urls import path, include

urlpatterns = [
    path('products', include('products.urls')),
]
  • url은 최상위 url 파일에서 사용자가 요청한 경로의 앱의 url로 이동함.
products.urls
from django.urls import path
from django.urls.resolvers import URLPattern

from products.views import ProductsView

urlpatterns = [
    path('', ProductsView.as_view()),
]
  • 앱 안의 url에서 역할에 맞는 각자의 view로 이동함
products/view.py
import json

from django.http import JsonResponse
from django.views import View

from products.models import Menu, Category, Product 

class ProductsView(View):
    def get(self, request):
        products = Product.objects.all()
        
        results = []
        
        for product in products:
            results.append(
                {
                    "menu"         : product.category.menu.name,
                    "category"     : product.category.name,
                    "product_name" : product.korean_name
                }
            )
            return JsonResponse({'results':results}, status=200)


    def post(self, request):
        data = json.loads(request.body)
        
        menu = Menu.objects.create(name=data['menu'])
        
        category = Category.objects.create(
            name = data['category'],
            menu = menu
        )
        
        Product.objects.create(
            category = category,
            korean_name = data['product_kor_name'],
            english_name = data['product_eng_name'],
            description = data['product_desc'],
        )

        return JsonResponse({'MESSAGE':'CREATED'}, status=201)
  • 사용자의 request method에 따라서 맞는 요청을 반환하게 된다.
  • 위에서는 post와 get 메서드에 따라 다른 메서드를 반환한다.
profile
https://rimi0108.github.io/

0개의 댓글