스터디/Web 9

[GCP] 구글 클라우드 플랫폼으로 서버 구축하기 (1) - 인스턴스 생성

프로젝트 개발이 모두 끝난 후 그 프로젝트의 마지막 단계는 단연코 서버에 올려서 잘 작동하는지 확인하는 것일 것이다. 마침 얼마 전에 프로젝트 개발이 모두 끝나서 서버에 올려보려는 중인데 여러 서버 플랫폼이 있지만, GCP가 무료 체험판 등 무료로 사용할 수 있는 방법들이 있어서 우리는 Google Cloud Platform(이하 GCP)를 이용해서 서버에 올려보려고 한다. 먼저 GCP 콘솔에 접속한다. https://console.cloud.google.com/ 그 다음으로는 프로젝트를 생성한다. 혹시 이미 프로젝트를 만들어서 대시보드가 뜬다면 상단의 프로젝트 이름을 클릭해 뜨는 창에 프로젝트를 만들 수 있는 버튼이 있다. 프로젝트 이름과 위치를 설정하고 '만들기' 버튼을 클릭한다. 프로젝트가 생성되면..

스터디/Web 2022.03.02

[Django] 한 프로젝트 내에서 다른 앱의 모델 사용하기

프로젝트를 여러 명이 함께 진행하다보니 각 팀원이 서로 다른 앱을 구현하게 되는데, 이 때 다른 앱의 모델 필드를 외래키로 사용하거나 모델 자체를 내 앱에서 사용하는 경우 어떻게 사용하면 되는지에 대한 내용을 다뤄보려고 한다. 편의상 내 앱의 이름은 'myapp', 다른 팀원의 앱 이름은 'yourapp'으로 서술하도록 하겠다. 모델들의 내용은 다음과 같다. # myapp/models.py class Review(models.Model): ... userId = models.ForeignKey(User, on_delete=models.CASCADE) ... # yourapp/models.py class User(models.Model): ... Review 모델에서는 User 모델을 외래키로 사용하지만 ..

스터디/Web 2022.02.09

[Django] 모델 수정하고 삭제하기

프로젝트를 진행하다가 초기에 작성했던 모델 내용을 수정하고, 데이터를 모두 삭제해야 할 이슈가 발생해서 관련 내용을 수행하고 글로 정리해보려고 한다. (1) 모델 수정하기 기존에 작성했던 모델의 내용은 다음과 같다. # app/models.py class Review(models.Model): reviewId = models.IntegerField(primary_key=True)# 삭제할 내용 userId = models.ForeignKey(User, on_delete=models.CASCADE) bookId = models.CharField(max_length=30) reviewTxt = models.TextField() 이 내용에서 서평 제목, 서평 평점, 서평 작성날짜 필드를 추가하고 PK인 rev..

스터디/Web 2022.02.08

[Django] DRF : Serializer 기본 사용법, 유효성 검증

참고 : https://www.django-rest-framework.org/api-guide/serializers/ 장고 레스트 프레임워크(Django REST Framework)를 이용해 REST API 환경을 구축하다보면 Serializer를 거의 필수적으로 사용하게 된다. 하지만 Serializer가 어떤 개념인지 잘 와닿지 않아서 Serializer에 대해 공부하고 알게 된 것들을 정리해보려고 한다. (1) Serializer란? 쿼리셋이나 모델 인스턴스 같은 복잡한 데이터들을 네이티브 파이썬 데이터 타입으로 변환하여 json, xml 등의 컨텐츠 타입으로 쉽게 렌더링할 수 있게 한다. 데이터를 직렬화하는 Serializer는 역직렬화 기능 또한 제공하기 때문에 들어오는 데이터를 검증한 후에 분..

스터디/Web 2022.01.30

[Django] DRF : REST API를 통해 장고와 리액트 연결하기

장고와 리액트를 연결하는 여러 방법 중 DRF(Django REST Framework)를 활용하는 방법이 있다. REST API 를 통하면 데이터의 CRUD(Create, Read, Update, Delete)를 쉽게 처리할 수 있는데, 이번 포스트에서는 특히 데이터의 Create, 리액트에서 작성한 글을 장고 모델에 등록하는 과정을 다뤄보려고 한다. (리액트와 장고의 설치는 생략하도록 하겠다.) 장고 REST API 를 구축하는 과정은 이전 포스트에서 다루었다. 장고 모델을 json 객체로 추출하기 (DRF) 장고로 프로젝트를 진행하다 보면 프론트와 연동하게 될 때가 있다. 이 방법들은 이전 포스트(link)에서 자세히 설명했고, 이 포스트에서는 그 중 장고에서 만든 모델을 json 객체로 추출해서 접..

스터디/Web 2022.01.29

[Django] DRF : 장고 모델을 json 객체로 추출하기

장고로 프로젝트를 진행하다 보면 프론트와 연동하게 될 때가 있다. 이 방법들은 이전 포스트(link)에서 자세히 설명했고, 이 포스트에서는 그 중 장고에서 만든 모델을 json 객체로 추출해서 접근하는 방법을 알아보도록 하겠다. Django REST Framework(DRF)는 웹에서 REST API 서버를 구축할 수 있도록 도와주는 오픈소스 라이브러리이다. 다양한 기기와 플랫폼이 만들어지면서 데이터를 다룰 때 기존의 방법에 한계가 생겼고, 이를 해결하기 위해 등장한 도구가 REST API이다. (1) 준비하기 먼저, DRF 를 사용하기 위해 터미널에서 다음 명령어를 입력해 DRF를 설치한다. pip install djangorestframework 다음으로 리액트에서 장고가 만드는 api에 접근할 수 ..

스터디/Web 2022.01.19

[Django] 모델 만들고 페이지에서 조회하기

참고: https://wikidocs.net/70650 이전 글에서 모델을 만들고 migrate 해서 앱에 적용하는 방법까지 배웠다. 이것을 내 프로젝트에 적용해서 모델을 만들고 데이터를 조회하는 페이지를 만들어보도록 하겠다. (1) 모델 만들기 (models.py 파일 작성) 모델 > User 테이블 속성명 데이터타입 userId (PK) int userEmail varchar(30) userPw varchar(20) userName varchar(20) 모델 > Review 테이블 속성명 데이터타입 reviewId (PK) int userId (FK) int bookId varchar(30) reviewTxt text 다음의 속성을 가진 유저 테이블과 서평 테이블을 생성한다. class User(mo..

스터디/Web 2022.01.13

[Django] 기본 개념 (앱, 모델, 관리자)

참고: https://wikidocs.net/73306 (1) 앱 장고에서는 기능을 수행하기 위해 '앱'이라는 형식을 사용한다. 프로젝트에 앱을 만드는 명령어는 다음과 같다. (mysite) C:\(생략)\DjangoProj\mysite>django-admin startapp myapp#앱 이름: myapp 앱이 생성되었으니 필요한 내용과 구현할 기능을 IDE에서 작성하고 개발서버를 구동한 다음 주소 뒤에 '/myapp' 를 붙이면 해당 기능이 구현된 웹 페이지가 띄워진다. 해당 페이지가 제대로 작동하려면 '프로젝트/config/urls.py' 에 url 매핑을 추가해야 한다. (...) urlpatterns = [ (...) path('myapp', 함수명) (...) ] (...) 다음과 같이 매핑을..

스터디/Web 2022.01.06

[Django] 개발환경 구축하기

참고: https://wikidocs.net/72280 장고를 처음 접하다보니 개발 환경이 마련되어있지 않아서 자료를 참고하며 개발 환경을 구축했다. (1) 가상 환경 구축 가상 환경을 만드는 이유는 위 자료에 자세히 설명되어 있다. 간단하게 얘기하자면 여러 프로젝트를 수행하다가 파이썬 버전을 다르게 사용하는 등 차이를 둬야할 때가 있는데 가상 환경에서 프로젝트를 진행하면 이런 경우에 각 환경 별로 대처하기가 쉽다. 본인은 mysite 라는 이름으로 가상 환경을 만들어보았다. C:\venvs\mysite\Scripts> activate cmd 상에서 원하는 폴더로 이동한 후, activate 명령어를 입력하면 가상 환경으로 이동한다. (mysite) C:\venvs\mysite\Scripts> deact..

스터디/Web 2022.01.05