장고 user
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) |