썸네일 [Django] DRF(1) single model DRF를 우선 하나의 모델에서 해보자 이때, html파일은 작성하지 않음 → 결과를 확인하기 위해 POSTMAN이라는 프로그램을 이용 더보기 https://www.postman.com/ Postman API Platform | Sign Up for Free Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster. www.postman.com POSTMAN이란? - API를 구축하고 사용하기 위한 플랫폼 - API를 빠르게 만들 수 있는 여러 도구 및 기능..
[Django] DRF란? # DRF = Django REST Framework Django에서 RESTful API서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리 → API server를 구현할 수 있음 참고) Server의 종류(배포 기준) 웹 서버 정적인 컨텐츠(html, css, 이미지 등)를 제공하기 위한 서버 대표적으로 Nginx, Apache등이 있다 API 서버 클라이언트가 데이터를 요청하면, 해당 데이터를 제공하기 위한 서버 일반적으로 API 서버는 WAS 위에서 동작 WAS(Web Application Server) 동적인 컨텐츠를 제공하기 위한 서버(DB 서버, API 서버, 세션 관리, 보안 등을 모두 포함함) 이런 것들을 모두 합쳐서 하나의 애플리케이션 실행 환경을 제공하는 서버 더보기 Djang..
[Django] RESTful API (2) 자원의 행위 / 표현 자원의 행위(HTTP Request Methods) 대표적인 HTTP Request Mehods GET: 조회(Read) 서버에 리소스의 표현을 요청 GET을 사용하는 요청은 데이터만 검색해야 함 POST: 생성(Create) 데이터를 지정된 리소스에 제출 서버의 상태를 변경 PUT: 수정(Update) 요청한 주소의 리소스를 수정 DELETE: 삭제 지정된 리소스를 삭제 자윈의 표현 지금까지는 사용자에게 페이지(html)만 응답하고 있었다 → render함수의 역할 근데 이렇게 하면 뭔가 일이 일어나면 계속 새로고침이 됨(좋아요 누를 때마다 페이지가 새로고침 됨) 그래서, 이제는 JSON데이터를 응답하는 REST API로 변환 → 프론트엔드 → 클라이언트 즉, django는 이제 백엔드의 영역만 다룰 것
[Django] RESTful API (1) URI과 URL # URI란? = 통합 자원 식별자 인터넷에서 리소스(자원)를 식별하는 문자열 # URL = 통합 자원 위치 URI의 한 종류 웹에서 주어진 리소스의 주소 네트워크 상에 리소스가 어디 있는지 알려주기 위한 약속 URL의 구조 Schema(Protocol) 브라우저가 리소스를 요청하는 데 사용하는 규약 기본적으로는 HTTP(S)를 쓰고 이외에도 mailto:, ftp:등 다른 프로토콜도 있음 Domain Name 요청 중인 웹 서버를 나타냄 직접 IP주소를 사용해야하지만 사용의 어려움때문에 Domain name으로 씀 예를 들어, google.com == 143.251.42.142 Port 웹 서버의 리소스에 접근하는데 사용되는 기술적인 문(Gate) Http : 80 Https : 443 표준포트는 생략..
[Django] API와 REST API란? 애플리케이션과 프로그래밍으로 소통하는 방법 서로 다른 프로그램에서 요청과 응답을 받을 수 있도록 만든 체계 예를 들어, 냉장고에 전기를 공급할 때 직접 전기를 공급하기 위해 배선을 하지 않고 플러그를 소켓에 꽂으면 공급할 수 있음 → 여기서 소켓 or 플러그가 API의 역할 Web API 웹 서버 또는 웹 브라우저를 위한 API 보통 OPEN API를 활용한다 REST란? (Representational State Transfer) API서버를 개발하기 위한 일종의 소프트웨어 설계 방법론 즉, ~~하자고 정해놓은 약속(규칙은 아님) RESTful API REST 원리를 따르는 시스템을 부르는 말 자원을 정의하고 자원에 대한 주소를 지정하는 전반적인 방법을 서술 ← 각각 API구조가 너무 다르니..
[SQLD] 식별자 # 식별자 엔터티를 대표할 수 있는 속성을 의미한다 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야한다. # 식별자의 특징 1. 유일성 모든 인스턴스들이 주식별자로 유일하게 구분되어야 한다. 예를 들어, 이름은 동명이인이 있을 수 있으므로, 식별자로 사원번호를 부여해준다. 2. 최소성 주식별자를 구성하는 속성은 최소의 수가 되어야 한다. 사원번호로도 충분하므로 그 외의 식별자는 필요없음 3. 불변성 주식별자의 값은 자주 변하지 않는 것이어야 한다. 사원번호는 변경되면 안된다. 4. 존재성 주식별자가 지정되면 반드시 값이 들어와야 한다. 사원번확 없는 직원은 있을 수 없다. # 식별자의 종류 1. 대표성 여부에 따른 분류 주식별자: 대표성을 만족하는 식별자 (ex. 사원번호) 보조 식별자: 유일성과..
[SQLD] 관계 (Relationship) # 관계 엔터티 간의 논리적인 관련성 동사형을 가짐 관계의 페어링: 인스턴스 간 개별적 관계 # 관계의 분류 [존재에 의한 관계 / 행위에 의한 관계] 로 나눌 수 있다. 예를 들어, 부서와 사원의 관계는 존재에 의한 관계 → 사원들이 모여서 구성된 것이 하나의 부서 고객과 주문의 관계는 행위에 의한 관계 → 고객이 제품을 '주문'한다는 개념이므로 행위에 의한 관계 ERD에서 관계를 연결할 때는 따로 구분하지 않고 단일화된 표기법으로 통일해서 사용 UML에서는 연관있으면 실선, 의존적이면 점선으로 표기함 더보기 UML이란? Unified Modeling Language의 약자 연관관계 / 의존관계가 있고 이 둘이 단일화된 표기법이 아니라 실선과 점선으로 표기를 다르게 해야함 ↑ 이거만 알아도 충분 # 관..
HTML에 아이콘을 넣고 싶을 때 https://fontawesome.com/ Font Awesome The internet's icon library + toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome. fontawesome.com 움직이는 아이콘 적용 가능 Bootstrap처럼 script에 한 줄 넣어서 적용
썸네일 [Django] 댓글 구현(N : 1) # N : 1관계 한 테이블의 0개 이상의 레코드가 다른 테이블의 레코드 한 개와 관련된 관계 댓글이 딱 N:1관계 → 글은 한개, 댓글은 N개가 달릴 수 있다 그럼... 한 댓글(comment model)이 있을 때, 얘가 어떤 article에 대한 댓글인지 어떻게 알 수 있을까? → ForeignKey()를 사용한다 # Foreignkey(외래키)란? N:1 관계를 설정하는 모델 필드로, 두 관계를 엮어주는 역할. # 댓글 구현해보기 1. 댓글 model 만들기 # articles/models.py class Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE) content = models.CharF..
[Django] Query 장고 → 지연로딩(lazy loading)이라는 기술을 사용 데이터를 실제로 사용할 때 DB로 쿼리를 전송한다. articles = Article.objects.all() 이때는 안하고 print문으로 출력했을 때 쿼리문을 2번 호출한다. print(articles[0].title) print(articles[1].title) 즉, 실제로 사용할 때 쿼리문이 DB로 전송된다 # articles: 전체 데이터 가져오기 1번 for article in articles: # article 이 가지고 있음 -> 안함 print(article.title) # 정참조 -> 호출 -> N번 print(article.user.username) # 역참조 -> 호출 -> N번 print(article.comment_se..
[Django] Fixtures # Fixtures? = 초기 데이터 데이터베이스가 아닌, 데이터베이스에 들어가 있는 데이터 모음 이걸로 공유하고, 이걸 받아와서 바로 DB데이터를 채울 수 있음 # dumpdata 기본 코드 $ python manage.py dumpdata [app_name[.Modelname] [app_name[.Modelname] ... ]] > filename.json articles 추출해보기 $ python manage.py dumpdata --indent 4 articles.article > articles.json --indent 4 == 보기 쉽게 들여쓰기 4칸으로 해라 다음과 같은 결과 값 얻을 수 있음 # articles.json [ { "model": "articles.article", "pk": ..
썸네일 [Django] N:M 팔로우 기능 구현 User(M) : User(N) 여기서는 테이블이 한개!! # accounts/models.py class User(AbstractUser): followings = models.ManyToManyField('self',symmetrical=False, related_name='followers') 자기 자신과 다대다 관계 → 'self' symmetrical → 대칭(기본값은 True), 여기서 안쓰면 자동으로 맞팔시킴 related_name → 역참조시 사용하는 이름 이걸 이용해서 역참조할때 user.followers.all()으로 조회할 수 있다 # accounts/urls.py urlpatters = [ ... path('/follow',views.follow,name="follow"), ] # ..