파이썬
-
[Django] APIView를 이용한 views.py 리팩토링 1파이썬/Django 2023. 1. 11. 17:46
APIView로 views.py 리팩토링하기 먼저 APIView를 import 해준다. from rest_framework.views import APIView 원래 있던 @api_view()와 함수를 갖다버리고 클래스를 생성한다. class Categories(APIView): # 모든 메소드는 항상 self 인자를 받아야 함 def get(self, request): all_categories = Category.objects.all() serializer = CategorySerializer(all_categories, many=True) return Response(serializer.data) def post(self, request): serializer = CategorySerializer(..
-
[Django] Rest 프레임워크로 [PUT] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 10. 19:26
PUT 메소드 만들기 - 객체 수정 categories/views.py elif request.method == "PUT": serializer = CategorySerializer( category, # 수정할 카테고리 데이터를 가져온다 data=request.data, # 사용자가 보낸 데이터 partial=True, ) if serializer.is_valid(): # 데이터가 유효하다면 updated_category = serializer.save() # save를 요청하면 자동으로 serializer.py에 있는 update 메소드가 실행된다. return Response(CategorySerializer(updated_category).data) else: return Response(seri..
-
[Django] Rest 프레임워크로 [POST] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 9. 18:08
새 카테고리 만드는 post api 만들기 POST categories/ @api_view(["GET", "POST"]) def categories(request): # GET 요청일 때 if request.method == "GET": all_categories = Category.objects.all() serializer = CategorySerializer(all_categories, many=True) return Response(serializer.data) # POST 요청일 때 elif request.method == "POST": serializer = CategorySerializer(data=request.data) 유효성 검사하기 📁 categories/serializers.py c..
-
[Django] Rest 프레임워크로 [GET] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 8. 22:39
serializer란? Django Python 객체를 JSON으로 번역해주는 번역기 같은 것 url 만들기 GET /categories 📁 categories/serializers.py from rest_framework import serializers class CategorySerializer(serializers.Serializer): pk = serializers.IntegerField() name = serializers.CharField(required=True) kind = serializers.CharField() created_at = serializers.DateTimeField() CategorySerializer : categories 모델을 어떻게 보여줄지 결정하는 함수 cat..
-
[Django] 어드민 액션 추가하기, 필터 만들기파이썬/Django 2023. 1. 7. 18:08
액션 함수 만들기 가격을 0원으로 만들어주는 액션 📁 rooms/admin.py @admin.action(description="가격 0원으로 설정하기") def reset_prices(model_admin, request, rooms): for room in rooms.all(): room.price = 0 room.save() 1. description에 설정한 문구는 어드민 페이지에서 액션을 고를 때 뜨는 문구이다. 2. 인자로는 model_admin과 request, rooms 를 넣어준다. 3. RoomAdmin 클래스에 액션 필드를 넣어준다. 📁 rooms/admin.py @admin.register(Room) class RoomAdmin(admin.ModelAdmin): actions = (..
-
[Django] Template 및 View 구현하기파이썬/Django 2023. 1. 5. 18:00
📁 config/urls.py from django.contrib import admin from django.urls import path from rooms import views urlpatterns = [ path('admin/', admin.site.urls), path("rooms", views.say_hello), ] urlpatterns는 path를 모아둔 리스트이다. path(이동할 url, 실행할 함수) 📁 rooms/views.py from django.shortcuts import render from django.http import HttpResponse def say_hello(request): return HttpResponse("hello!") 그리고 /rooms 로 이동하..
-
[Django] 어드민 페이지 디테일 수정하기파이썬/Django 2023. 1. 4. 14:53
생성한 어메니티가 클래스 명으로 나오는 현상 고치기 어메니티 클래스 내부에 아래 함수를 추가한다. def __str__(self) -> str: return self.name 전체코드 📁 rooms/models.py from django.db import models from common.models import CommonModel class Room(CommonModel): """Room Model Definition""" class RoomKindChoices(models.TextChoices): ENTIRE_PLACE = ("entire_place", "Entire Place") PRIVATE_ROOM = ("private_room", "Private Room") SHARED_ROOM = ("sh..
-
[Django] Reverse Accessors, 외래키 Foreign Key파이썬/Django 2023. 1. 3. 09:38
Reverse Accessors Reverse Accessors 가 필요한 이유 숙소 주인이 얼마나 많은 방을 가지고 있는지 보기 Room owner Room.objects.filter(onwer__ dir() >>> dir(me) : user가 가진 메소드와 속성들을 보여줌 booking_set, room_set 등 user가 가지고 있는 모든 방과 예약 등을 한 번에 보여주는 메소드를 가지고 있음 me.room_set.all() -> QuerySet을 얻을 수 있음 외래키 사용하기 ForeignKey experience = models.ForeignKey( "experiences.Experience", null=True, blank=True, on_delete=models.SET_NULL, # boo..