장고) seolpyo_django

작성자: [관리자] 하얀설표

2026.02.06 11:27 (KST) 작성됨

2026.02.09 16:33 (KST) 수정됨






(02.09) 수정됨.

목표

1개 project에서 2개 이상의 사이트 구동하기

- 장고에서는 이미 The “sites” framework라는 것을 제공하고 있다. 그러나 이것은 1개 project를 설정을 달리해서 2개, 3개 실행해 다수의 사이트를 1개 project에서 관리할 수 있도록 하는 것이다. 내가 원하는 것은 1개 project를 실행해서 2개, 3개 이상의 사이트를 작동하게 할 수 있게 하는 것이다.

 

URL dispatcher

URL dispatcher를 살펴보면, 방문자에게 적용할 urlconf를 조작하는 것이 가능하다.

사이트마다 별도 urlconf를 작성하고, 접속 도메인에 따라 이를 변경할 것이다.

여기에 사이트별 database를 분리하는 것까지 한다면 통해 접속 도메인에 따라 노출할 내부 링크와 게시물을 물리적으로 나눌 수 있게 된다.

 

User model

multiple site를 1 app으로 운영하는 경우 가장 큰 문제는 User model이다.

User model 역시 사이트별로 나누어서 만들 수 있으나, 장고에서 User model을 지원하기 위해  AUTH_USER_MODEL 옵션에서는 1개의 User model만 연결이 가능하다.

django.contrib.auth

 

물론 AUTH_USER_MODEL을 임의로 설정하고 사이트별로 이를 상속받는 별도의 abstract model...보다는 OneToOneField를 이용한 별도 프로필을 이용하게 하는 방법을 사용할 수는 있으나, 개인적으로 이런 방법은 관리 측면에서 번거롭다.

 

개인적으로는 사이트마다 별도 pk가 적용되는 것이 아니라는 점이 제일 거슬린다.

a 사이트에 10명의 user가 존재하면 b 사이트에는 1번째 user라고 하더라도 pk는 1이 아닌 11을 부여받게 된다.

아무런 문제가 없지만 그냥 거슬린다.

 

그 대신, 1개의 project에서 1개의 root domain을 사용한다는 가정 하에 1개 User model을 사용하게 만들고, 사이트별로 개별 프로필을 작성하여 사용할 수 있도록 하는 방법을 생각하고 있다. User model(default database) -> Profile model(site database) 같은 느낌.

 

구현

 

프로필은 얼추 구현이 되었다.

프로필 별도 구현보다 네이버 로그인 구현하는게 더 오래 걸렸다.

네이버에 제공하는 가이드 문서가 있긴 한데, 내용이 너무 쓸데없이 길어 내게 필요한 내용을 찾아야 하는 번거로움이 있고, 또한 예제가 당장 갖다 쓸 수 있는 것들이 아니었기 때문에 그것까지 반영하는데 시간이 걸렸다.

 

소셜 로그인의 경우 csrf protect가 어려운데, state로 전달하는 값을 세션에 보관하는 방식으로 처리했다.

 

차단, 메세지, 쪽지 기능

메세지, 쪽지 기능이 필요하다.

유저간 쪽지 또는 제재 등의 알림 용도로 사용하기 위함이다.

 

차단 기능 또한 추가하여 차단한 유저에게서는 메세지를 받지 않을 수 있도록 해볼 예정이다.

 

쪽지 기능

 

우선 쪽지 기능을 만들었다.

그냥 이대로 사용하면 쪽지와 알림을 1개 모델로 사용할 수도 있고, 쪽지와 알림을 별도로 분리하여 사용하는 것도 가능하다.

 

차단 기능

 

차단 기능도 얼추 완성했다.

 

 

 

 

 

 

 

 






추천 (0)


글 목록

댓글을 달 수 없는 게시물입니다.


"분류없음" 카테고리의 #Python, #Django 관련 게시물