728x90

IT/WEB 50

[Django] User모델 커스터마이즈하기 (커스텀 User 모델)

※일본의 한 블로그 글을 번역한 포스트입니다. 의역 및 직역, 오역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. Django에서는 표준 User 모델이 정의되어 있다. 그러나 대부분은 만드는 Web 어플리케이션에 맞게 User 모델을 커스터마이즈할 필요가 있다. User 모델을 커스터마이즈하는 방법은 몇 가지 있으나 여기서는 가장 자유도가 높은 AbstractBaseUser을 상속받는 방법에 대해서 구체적으로 설명하도록 하겠다. 주의점 : 커스텀 User 모델을 이용할 경우 Django의 프로젝트 생성 후 바로 설정할 필요가 있다. 이미 migrate한 후에 User을 변경하려고하는 것은 매우 어렵다. 표준(디폴트) User모델 앞서 말했듯 Django에서는 기본적으로 User 모델이 존재..

IT/WEB 2022.06.29

[Django] Django 개발을 시작할 때, 최적의 프로젝트 디렉토리 구성

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 밒 직역, 의역이 있일 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. Django 개발에 대해서 알아보던중, Django로 개발할 때 의식하면 좋은 최적의 구성이 있다는 사실을 알게 됐다. 이번 포스팅에서는 이와 관련된 얘기를 하고자 한다. 목차는 다음과 같다. 설정 파일을 config등 알기 쉬운 명칭으로 한다. static 디렉토리를 생성한다. 시크릿 변수나 환경 의존 변수는 .env 파일에 쓴다. 단계별로 설정 파일을 전환할 수 있도록 한다. 어플리케이션 마다 urls.py를 배치한다. 베이스 템플릿을 사용한다. 이 목차를 모두 거치면 다음과 같이 디렉토리 구성이 변경된다(첫 번째가 변경'전', 두 번째가 변경'후'이다). 참고로 프로젝트명..

IT/WEB 2022.06.17

[PostgreSQL] 누구나 알기 쉬운 PostgreSQL DB구축

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있일 수 있으며 틀린 내용은 지적 부탁드립니다. DB의 실행 $ psql -d 데이터베이스명; postgres를 먼저 실행한다. $ psql -d postgres; 만약 비밀번호에서 에러가 발생한 경우 아래의 커맨드와 같이 관리자를 지정하여 패스워드 postgres를 입력하자. $ psql -d postgres -U postgres DB의 생성과 삭제 DB의 생성 기본 구문이다. # CREATE DATABASE 데이터베이스명; 예를 들면 kenko이라는 이름의 DB를 작성한다면 다음과 같다. # CREATE DATABASE kenko; 참고로 이 커맨드로 DB의 목록을 확인할 수 있다. # \l List of databases Nam..

IT/WEB 2022.06.08

console.log(); 외 다양한 디버그 방법

※ 일본의 한 블로그 글을 번역한 포스트입니다. 의역 및 직역, 오역이 있일 수 있으며 내용 오류시 지적해주시면 감사하겠습니다. javascript로 디버그를 할 때, console.log(); 만을 사용하던 과거의 나를 위해 쓰는 포스트입니다. console.log({변수명}); 갑자기 console.log(); 소개하다니라고 생각할 수 있겠지만, 이 방법을 알게 됐을 때 '왜 진작 몰랐을까...' 라고 생각할 정도로 편리했기 때문에 첫 번째로 언급하도록 하겠다. 다음과 같은 HTML이 있다고 가정하자. 각각의 input의 요소와 값을 얻어보자. let nameForm = document.getElementById('name'); let ageForm = document.getElementById('a..

IT/WEB 2022.05.22

XPATH 사용법·작성법

※ 일본의 블로그 글을 번역한 포스팅입니다. 오역 및 직역이 있을 수 있으므로 내용 지적 언제나 환영합니다. 초급편 XPath란? XPath는 XML문장 속의 요소, 속성 등을 지정하기 위한 언어이다. XPath에는 XML문장을 트리로서 다루기 때문에, 요소나 속성의 위치를 지정하는 것이 가능하다. HTML도 XML의 일종으로 간주 될 수 있으므로, XPath를 사용하여 HTML문장의 요소를 지정하는 것도 가능하다. 예를 들어 ... 원피스 iQON 12,000원 10,000원 위와 같은 HTML의 경우라면, 아래와 같이 트리 구조로 나타낼 수 있다. XPath는 이러한 트리 구성으로 부터 요소를 얻어낸다. XPath의 기초 XPath는 로케이션 패스에의해 표현된다. 로케이션 패스란 트리구조로부터 특정 ..

IT/WEB 2021.01.13

[Django] 테이블(모델)의 JOIN(3) ; prefetch_related()

간단 사용법 QueryAPI에서도 QuerySet을 돌려주는 메소드이다. select_related()와 마찬가지로 한 번의 쿼리로 관계 테이블의 객체를 얻을 수 있다 (즉 JOIN가능하다). 차이점이라면 prefetch_related()는 M2M 관계일 때 사용한다는 것이다. 이와 관련해서 조금 더 설명을 덧붙이자면 다음과 같다. ● select_relation()의 경우 select_relation()은 관계 테이블의 객체도 포함해서 SQL로 SELECT를 실행해 객체를 얻고 있다. 따라서 관계 테이블의 객체도 포함해서 한 번의 쿼리로 모든 대상 객체를 얻는다. 따라서 M2M의 관계의 객체를 대상으로 실행했을 경우 엄청난 수의 객체를 얻게 된다. 따라서 select_related는 ForeignKey..

IT/WEB 2020.11.18

[Django] 테이블(모델)의 JOIN(2) ; select_related()

지난번에 작성했던 '테이블(모델)의 JOIN(1)'의 경우 너무 가볍게 보기도 하고 거기서 언급했듯 스스로도 이해를 못했기 때문에 prefetch_related()와 select_related() 각각의 메소드 사용법을 조금 더 살펴보겠습니다. 이번 포스팅에서는 둘 중 먼저 select_related()의 사용 대해 다뤄보고자 합니다. 간단 사용법 쿼리를 실행했을 때에 지정된 외래 키의 개체도 함께 가져온다. 이를 통해 DB에 접근하는 횟수를 줄일 수 있다. 사용예에 대해서 살펴보자면, 첫 번째 코드를 두 번째로 코드로 변경할 수 있다. # DB에 접근 e = Entry.objects.get(id=5) # 아직 DB를 건들이고 있다. b = e.blog # DB에 접근 e = Entry.objects.s..

IT/WEB 2020.11.16

[Vue.js] Vue.js 입문 (1) ; 기본 구문

먼저 Vue.js 자체의 기본적인 구문을 정리해보도록 하겠다. Vue 인스턴스 Vue 인스턴스의 작성법은 아래와 같다. //app.js new Vue({ el: "#app", data: { name: "Kei", age: "30", counter: 0 }, methods: { increase: function() { this.counter += 1; } } }) 이 app.js를 Vue.js와 함께 임포트한다. {{ }} {{ }} 로Vue인스턴스의 요소를 호출할 수 있다. {{ name }} v-bind HTML요소를 Vue.js에 동적으로 지정하고 싶은 경우에 v-bind를 사용한다. Google v-once v-once 를 HTML 태그에 포함하여 1번 그려진 요소의 내용이 변경되지 않도록 할 수 ..

IT/WEB 2020.11.13

[Django] 테이블(모델)의 JOIN(1)

데이터 베이스 관계에 대한 설명 우선 잠시 '1대1', '1대다(多)', '다(多)대다(多)'에 대한 이야기부터 하고자 한다. 1대1관계 양쪽의 레코드가 1대1 대응하는 관계를 의미한다. 다른 말로 하자면, 양쪽의 PK(기본키)가 같다고 할 수있다. 이러한 설계를 하는 예로는 분할하지 않아도 괜찮은 테이블이 분할되는 경우이다. 기존 테이블 구성을 변경하지 않고 항목을 추가하고 싶은 경우 등을 제외하고, 실제로 사용하는 경우는 적을 것이라고 생각한다. 1대다(多)관계 A의 레코드는 B의 복수의 레코드와 관계가 있을 가능성이 있으나, B의 레코드는 A의 레코드와 최대 1개 밖에 관련이 있는 경우이다. 조금 더 자세히 설명하자면, A의 입장에서 봤을 때, A의 1개의 레코드가 동시에 복수의 B의 레코드와 관련..

IT/WEB 2020.10.21

[JavaScript/jQuery] 코드 리뷰 내용 정리 (2)

1. view 단에서 조건 문에 따른 response의 작성 할 때는 if-else 따로 따로 response를 두 개로 나눠 작성하지말고 하나로 작성하자. 2. iterable 객체 안에 최소값이나 최대값을 얻어내는 동작을 수행하는 코드의 경우 python의 min, max 함수를 활용하자. docs.python.org/3/library/functions.html#min 3. 코딩 중에 중간에 출력되는 값을 조사하고 싶을 때 print문 보다는 다음의 logging을 사용하자. docs.python.org/ko/3/howto/logging.html import logging; logger = logging.getLogger(__name__) ... logger.debug(f"foo") 그러나 유효화하기..

IT/WEB 2020.10.06
728x90