기본적으로 serializer의 출력을 했을 때, 포맷은 다음과 같다.from api2.serializers import *CommentSerializer()>> id =IntegerField..content CharField..create_dt = DateTImeField.. 직렬화는, Model instance에서 시리얼라이저, json data에서 byte data 순서로 바뀐다. 그러나 역직력화는 반대로 byte data에서 json data를 거쳐 시리얼라이저에서 해석해 model instace에 들어가게 된다. 따라서 다음과 같은 직렬화를 볼 수 있다.python manage.py shellfrom blog.models import *comm = Comment.objects.first()cs ..

복습 겸 RESTful API를 활용 django rest framework는 어떨 때 쓰는 것인가? mysite2에 있는 urlsurlpatterns = [ path('', HomeView.as_view(), name='home'), path("admin/", admin.site.urls), path("blog/", include('blog.urls')), path("api/", include('api.urls')),api 앱이 있다. 카테고리와 좋아요 버튼, 태그의 blog의 models에 3개가 있다.Post,Category, Tag Post안에 Foriegnkey = Post가 m이고, category가 1인 1:M 관계 tags tag.post_set으로 관계 설정 Te..

장고 auth 앱https://github.com/django/django/tree/main/django/contrib/auth 회원가입 및 로그인 커스텀 페이지를 아예 앱으로 만들어놓은 게 있다. User 모델 사용user 모델을 사용하려면 수정해줘야 한다.from django.contrib.auth.models import UserUser.objects.all()from django.contrib.auth import get_user_modelUser = get_user_model()author = models.ForeignKey('auth.User')from django.conf import settingsauthor = models.ForeignKey(settings.AUTH_USER_MODEL)..
admin 페이지는 기본적으로 장고에서 제공한다. 해당 app마다 admin.py가 있다.from .models import 모델명admin.site.register(모델명)으로 기본적으로 사용할 수 있고, 혹은 커스터마이징해서 사용할 수 있다.from django.cotrib import adminfrom .models import 모델명class 클래스명(admin.ModelAdmin): pass admin.site.register(모델명, 클래스명)혹은@admin.register(모델명)class 클래스명(admin.ModelAdmin): pass ModelAdmin 속성에는 list_display와 id, title, bodt와 같은 리스트의 변수들을 넣을 수 있다.from django.co..

static 파일, 미디어 파일 static 파일은 .css, .js, a.jpg와 같은 게 static 파일이다. media 파일이란from이 있고 input type에 file이 되어 있으면 업로드가 되어 있다.서버쪽에 업로드한 파일을 부를 때 장고에서는 이걸 media 파일이라고 부른다. static file은 쓰려면 환경 세딩을 해야 한다. static 파일의 위치1 앱/static에 있거나2. setting.py 모듈의 STAICFILE_DIRS 속성에 지정한 곳에 있어야 한다.STATICFILES_DIRS = [os.path.join(BASE_DIR, 'mysite', 'static'),] 서비스시 위치에는 STATIC_ROOT = os.path.join(BASE_DIR, 'static')이어..
함수 기반 뷰 지금까지 썼던 views.py가 이런 것에 해당한다.def my_view(request): if request.method == 'GET' #서비스 처리 return HttpResponse('result')후에 urls.py에서 path를 추가 그러나 만약에 view 안에 있는 내용이 너무 많다면 이걸 클래스로 구현해도 된다. 클래스 기반 뷰class django.views.generic.base.View를 상속받음View는 모든 클래스형 뷰의 기본이 되는 최상위 뷰참조 문서https://docs.djangoproject.com/en/4.2/ref/class based views/base/#view소스코드 https://github.com/django/django/blo..