Programming Language 105

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)를 요구하며 ..

SQLite_06)Fixtures

Django가 데이터베이스로 가져오는 방법을 알고 있는 데이터 모음 생성(데이터 추출) - dumpdata 로드(데이터 입력) - loaddata dumpdata python manage.py dumpdata --indent 4 articles.article > articles.json ... accounts.user ... ... articles.comment ... manage.py와 동일한 위치에 data가 담긴 articles.json 파일이 생성됨 # 3개의 모델을 하나의 json 파일로 python manage.py dumpdata --indent 4 articles.article articles.comment accounts.user > data.json # 모든 모델을 하나의 json 파일..

SQLite_05)Foreign Key_3

ManyToManyField’s Arguments related_name target model이 source model을 참조할 때 사용할 manager name ForeignKey의 relqted_name과 동일 through 중개 테이블을 직접 작성하는 경우, through 옵션을 사용하여 중개 테이블을 나타내는 Django 모델을 지정 일반적으로 중개 테이블에 추가 데이터를 사용하는 다대다 관계와 연결하려는 경우(extra data with a many-to-many relationship)에 사용됨 symmetrical 기본 값: True ManyToManyField가 동일한 모델을 가리키는 정의에서만 사용 True일 겅우 _set 매니저를 추가하지 않음 source 모델의 인스턴스가 targe..

SQLite_04)Foreign Key_2

댓글과 유저를 Foregin Key로 연결하기 Comment 모델에 User 모델을 참조하는 외래키 작성 # articles/models.py class Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) CommentForm 출력을 확인해보면 불필요한 필드인 user가 드롭다운으로 출력됨 user 필드에 작성해야하는 user 객체는 view 함수의 request 객체를 활용해야함 CommentForm의 출력필드 수정 class CommentForm(forms.Mode..

SQLite_03)Foreign Key_1

A many-to-one relationship RDB에서의 관계 1:1 한 테이블의 레코드 하나가 다른 테이블의 레코드 단 한 개와 관련된 경우 One-to-one relationships N:1 한 테이블의 0개 이상의 레코드가 다른 테이블의 레코드 한 개와 관련된 경우 기준 테이블에 따라(1:N, One to many reltionships)이라고도 함 Many-to-one relationships M:N 한 테이블의 0개 이상의 레코드가 다른 테이블의 0개 이상의 레코드와 관련된 경우 양쪽 모두에서 N:1의 관계를 가짐 Many-to-many relationships Foreign Key 외래 키 관계형 데이터 베이스에서 다른 테이블의 행을 식별할 수 있는 키 키를 사용하여 부모 테이블의 유일한 ..

SQLite_02)CRUD

Aggregate function 집계함수 값 집합의 최대값, 최소값, 평균, 합계 및 개수를 계산 값 집합에 대한 계산을 수행하고 단일 값을 반환 여러 행으로부터 하나의 결과 값을 반환하는 함수 SELECT 문의 GROUP BY 절과 함께 사용 SELECT country, avg(balance) FROM users WHERE country = '전라북도'; GROUP BY clause Make a set of summary rows from a set of rows 특정 그룹으로 묶인 결과를 생성 선택된 컬럼 값을 기준으로 데이터(행)들의 공통 값을 묶어서 결과로 나타냄 SELECT country, avg(balance) FROM users GROUP BY country; SELECT last_name..

SQLite_01)Set up & Basics

1. 다운로드 sqlite.org/download.html 운영체제에 맞는 DLL 파일과 번들을 다운받기 2. 설치 C/sqlite 경로에 압축을 푼 파일들 넣기 제어판에서 시스템 환경 변수 편집 고급 탭에서 환경 변수 시스템 변수 Path를 편집. 새로만들기 - C:\sqlite 확인 파일들이 있는 경로에서 터미널로 wimpty sqlite3 3. alias 등록 터미널에서 code ~/.bashrc .bashrc에서 alias sqlite3=”winpty sqlite3” 입력 후 저장 터미널에서 source ~/.bashrc 이제 sqlite3만 입력해도 실행 가능 사전준비 SQLite3, SQLite extension 설치 데이터베이스 name.sqlite3 파일 생성 name.sql 파일 생성 V..