Programming Language/Django 14

Django 14)REST API_4

N:1 - 역참조 데이터 조회 특정 게시글에 작성된 댓글 목록 출력 기존 필드 override - Article DEtail 게시글 조회시 해당 게시글의 댓글 목록까지 함께 출력 Serializer는 기존 필드를 override 하거나 추가적인 필드를 구성할 수 있음 1. PrimayKeyRelatedField() # articles/serializers.py class ArticleSerializer(serializers.ModelSerializer): comment_set = serializers.PrimaryKeyRelatedField(many=True, read_only=True) class Meta: model = Article fields = '__all__' models.py에서 relate..

Django 13)REST API_3

Raising an exception on invalid data 유효하지 않은 데이터에 대해 예외 발생시킴 is_valid()는 유효성 검사 오류가 있는 경우 ValidationError 예외를 발생시키는 선택적 raise_exception 인자를 사용할 수 있음 DRF에서 제공하는 기본 예외 처리기에 의해 자동으로 처리되며 기본적으로 HTTP400 응답을 반환 POST 요청에 대한 데이터 생성이 성공했을 경우는 201 Created 상태 코드를 응답하고 실패 했을 경우는 400 Bad request를 응답 from .serializers import ArticleListSerializer from rest_framework import status @api_view(['GET', 'POST']) de..

Django 12)REST API_2

API Application Programming Interface 애플리케이션과 프로그래밍으로 소통하는 방법 개발자가 복잡한 기능을 보다 쉽게 만들 수 있도록 프로그래밍 언어로 제공되는 구성 API를 제공하는 애플리케이션과 다른 소프트웨어 및 하드웨어 등의 것들 사이의 간단한 계약(인터페이스)이라고 볼 수 있음 API는 복잡한 코드를 추상화하여 대신 사용할 수 있는 몇가지 더 쉬운 구문을 제공 Web API 웹 서버 또는 웹 브라우저를 위한 API 현재 웹 개발은 모든 것을 하나부터 열까지 직접 개발하기보다 여러 Open API를 활용하는 추세 대표적인 Third Party Open API 서비스 목록 Youtube API Naver Papago API Kakao Map API API은 다양한 타입의 ..

Django 11)REST API_1

URI Uniform Resource Identifier(통합 자원 식별자) 인터넷에서 리소스를 식별하는 문자열 가장 일반적인 URI는 웹 주소로 알려진 URL 특정 이름공간에서 이름으로 리소스를 식별하는 URI는 URN URL Uniform Resource Locator(통합 자원 위치) 웹에서 주어진 리소스의 주소 네트워크 상에 리소스가 어디있는지 주소를 알려주기 위한 약속 이러한 리소스는 HTML, CSS, 이미지 등이 될 수 있음 URL은 다음과 같이 여러 부분으로 구성되며 일부는 필수이고 나머지는 선택사항 Scheme(or protocol) 브라우저가 리소스를 요청하는데 사용해야하는 프로토콜 URL의 첫 부분은 브라우저가 어떤 규약을 사용하는지를 나타냄 기본적으로 웹은 HTTP(S)를 요구하며 ..

Django 10)Authorization/Authentication_2

User CRUD Create UserCreationForm(built-in form)을 사용 주어진 username과 password로 권한이 없는 새 user를 생성하는 ModelForm 3개의 필드를 가짐 username(from the user model) password1 password2 회원가입 페이지 작성 # accounts/urls.py app_name = 'accounts' urlpatterns = [ ..., path('signup/', views.signup, name='signup'), ] # accounts/views.py from django.contrib.auth.forms import AuthenticationForm, UserCreationForm def signup(re..

Django 09)Authorization/Authentication_1

장고 인증시스템은 인증(Authentication)과 권한(Authorization) 부여를 함께 제공 필수 구성은 settings.py에 이미 포함되어 있으며 INSTALLED_APPS에서 확인 가능 django.contrib.auth Authentication(인증): 신원확인, 사용자가 자신이 누구인지 확인하는 것 Authorization(권한, 허가): 권한 부여, 인증된 사용자가 수행할 수 있는 작업을 결정 사전 설정 app accounts 생성 및 등록(python manage.py startapp accounts, setting에서도) url 분리 및 매핑 Substituting a custom User model 개발자들이 작성하는 일부 프로잭트에서는 django에서 제공하는 built-i..

Django 08)Static/Media

Static File 응답할 때 별도의 처리 없이 파일 내용을 그대로 보여주면 되는 파일 사용자의 요청에 따라 내용이 바뀌는 것이 아니라 요청한 것을 그대로 보여주는 파일 파일 자체가 고정되어 있고, 서비스 중에도 추가되거나 변경되지 않고 고정되어있음 예를 들어, 웹 사이트는 일반적으로 이미지, 자바 스크립트 또는 CSS 같이 미리 준비된 추가파일을 제공해야함 Django에서 이러한 파일들을 static file이라 함 Django는 staticfiles 앱을 통해 정적 파일과 관련된 기능을 제공 Media File 미디어 파일 사용자가 웹에서 업로드하는 정적 파일(user-uploaded) 유저가 업로드한 모든 정적 파일 웹 서버와 정적 파일 웹 서버의 기본동작은 특정 위치(URL)에 있는 자원을 요청..

Django 07) Form

HTML form, input 태그를 통해서 데이터를 입력 받음 입력된 데이터가 필요한 데이터 형식에 맞는지 유효성 검증이 필요. Django From은 그것에 할애되는 과중한 작업과 반복코드를 줄여줌 렌더링을 위한 데이터 준비 및 재구성 데이터에 대한 HTML forms 생성 클라이언트로부터 받은 데이터 수신 및 처리 개요 Form Class Model Class를 선언하는 것과 유사 Model과 마찬가지로 상속을 통해 선언(forms 라이브러리의 Form 클래스를 상속 받음) 활용 앱 폴더에 forms.py를 생성 후 ActicleForm Class 선언 from django import forms class ArticleForm(forms.Form): title = forms.CharField(ma..

Django 06) CRUD_2

Update edit, update 두 함수 필요 new-create, edit-update의 view 함수 역할을 보면 하나의 공통점과 하나의 차이점이 있음 공통점 new-create는 모두 create 로직을 구현하기 위한 공통 목적 edit-update는 모두 update 로직을 구현하기 위한 공통 목적 차이점 new와 edit은 GET 요청에 대한 처리만을, create와 update는 POST 요청에 대한 처리만을 진행 이 공통점과 차이점을 기반으로, 하나의 view 함수에서 method에 따라 로직이 분리되도록 변경 가능 Delete

Django 05) CRUD_1

Admin site Django의 가장 강력한 기능 중 하나인 automatic admin interface 사용자가 아닌 서버의 관리자가 활용하기 위한 페이지 모델 class를 admin.py에 등록하고 관리 레코드 생성 여부 확인에 유용하며 직접 레코드를 삽입할 수도 있음 username과 password를 입력해 관리자 계정을 생성 이메일은 선택사항이기 때문에 넘기는 것이 가능 모델의 record를 보기 위해서는 admin.py에 등록 필요 CRUD with view functions view 함수를 통해 CRUD 구현하기 Article Model 작성 auto_now_add = True auto_now = True READ1 전체 게시글 조회 index 페이지에서는 전체 게시글을 조회하여 출력 R..