1 개요

게시판이나 설문 등 장고에서 구현한 기능들은 사용자의 유저모델을 불러 사용하는 경우가 많다. 이러한 지식에 대해 더 자세히 다루기 위한 분류.

커스텀 유저에 대한 건 링크를 참고하자.

2 뷰에서 user모델 부르기

뷰에서 유저모델을 불러오는 방법은 3가지가 있다.

view에 request가 포함된다면 request.user로 사용자에 접근한다.(사실, 모델을 편집하지 않는 한 아래처럼 모델을 임포트 해올 필요는 없다.)

방법 설명 활용
직접 부르기 커스텀 유저모델이 있는 경우 사용한다.

직접 유저앱의 유저모델을 부르기.

다음과 같은 형태이다.

from users import User

settings를 경유해 부르기 settings에 지정된 유저모델을 불러오는 것.

문자열이 반환되어 쓰인다.

(권장되는 방법)

from config.settings import AUTH_USER_MODEL

class User(AbstractUser):
    followers = models.ManyToManyField(
            settings.AUTH_USER_MODEL,
            related_name='followings'
        )
메서드 사용 유저모델을 불러오는 메서드를 사용한다.

클래스가 반환되어 쓰인다. (권장되는 방법)

from django.shortcuts import render
from django.contrib.auth import get_user_model  # 이 안에 유저모델이 담긴다.

def main_show(request):
    user = get_user_model()
    if user.is_social == True:
        test = '소셜'
    else:
        test = '안소셜.'
    context = {'test':test}
    return render(request, 'main/main.html', context)

3 탬플릿에서 user 사용

기본적으로 request가 담겨서 가기 때문에 view에서 user모델에 대한 사용이 없더라도 {{user}}을 통해 바로 유저모델을 사용할 수 있다.

4 user 안의 속성.

장고에서 사용하는 user의 하위속성엔 무엇이 있을까?

속성 설명 활용
is_authenticated 로그인 되어있는지 여부가 담겨있다. 로그인이 되어 있는 경우에만 함수가 작동하게끔.

if request.user.is_authenticated: