"장고 user"의 두 판 사이의 차이

 
(다른 사용자 한 명의 중간 판 하나는 보이지 않습니다)
6번째 줄: 6번째 줄:
 
== 뷰에서 user모델 부르기 ==
 
== 뷰에서 user모델 부르기 ==
 
뷰에서 유저모델을 불러오는 방법은 3가지가 있다.
 
뷰에서 유저모델을 불러오는 방법은 3가지가 있다.
 +
 +
view에 request가 포함된다면 request.user로 사용자에 접근한다.(사실, 모델을 편집하지 않는 한 아래처럼 모델을 임포트 해올 필요는 없다.)
 
{| class="wikitable"
 
{| class="wikitable"
 
!방법
 
!방법
19번째 줄: 21번째 줄:
 
|settings를 경유해 부르기
 
|settings를 경유해 부르기
 
|settings에 지정된 유저모델을 불러오는 것.
 
|settings에 지정된 유저모델을 불러오는 것.
|from customuser.settings import AUTH_USER_MODEL
+
문자열이 반환되어 쓰인다.
 +
 
 +
(권장되는 방법)
 +
|<syntaxhighlight lang="python">
 +
from config.settings import AUTH_USER_MODEL
 +
 
 +
class User(AbstractUser):
 +
    followers = models.ManyToManyField(
 +
            settings.AUTH_USER_MODEL,
 +
            related_name='followings'
 +
        )
 +
</syntaxhighlight>
 
|-
 
|-
 
|메서드 사용
 
|메서드 사용
 
|유저모델을 불러오는 메서드를 사용한다.
 
|유저모델을 불러오는 메서드를 사용한다.
(가장 권장되는 방법)
+
클래스가 반환되어 쓰인다.
|from django.contrib.auth import get_user_model
+
(권장되는 방법)
get_user_model() # 이 안에 유저모델이 담긴다.
+
|<syntaxhighlight lang="python">
 +
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)
 +
</syntaxhighlight>
 
|}
 
|}
  
==user==
+
== 탬플릿에서 user 사용 ==
request.user로 사용자에 접근한다.
+
기본적으로 request가 담겨서 가기 때문에 view에서 user모델에 대한 사용이 없더라도 <code><nowiki>{{user}}</nowiki></code>을 통해 바로 유저모델을 사용할 수 있다.
  
 +
==user 안의 속성.==
 
장고에서 사용하는 user의 하위속성엔 무엇이 있을까?
 
장고에서 사용하는 user의 하위속성엔 무엇이 있을까?
 
{| class="wikitable"
 
{| class="wikitable"
43번째 줄: 69번째 줄:
 
if request.user.is_authenticated:
 
if request.user.is_authenticated:
 
|-
 
|-
|
+
|id
|
+
|유저의 pk가 담긴다.
|
+
|posting.like_users.filter(id=request.user.id)
 
|-
 
|-
 
|
 
|

2022년 5월 16일 (월) 11:05 기준 최신판

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:

id 유저의 pk가 담긴다. posting.like_users.filter(id=request.user.id)