"장고 user"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
6번째 줄: | 6번째 줄: | ||
== 뷰에서 user모델 부르기 == | == 뷰에서 user모델 부르기 == | ||
뷰에서 유저모델을 불러오는 방법은 3가지가 있다. | 뷰에서 유저모델을 불러오는 방법은 3가지가 있다. | ||
+ | |||
+ | view에 request가 포함된다면 request.user로 사용자에 접근한다.(사실, 모델을 편집하지 않는 한 아래처럼 모델을 임포트 해올 필요는 없다.) | ||
{| class="wikitable" | {| class="wikitable" | ||
!방법 | !방법 | ||
19번째 줄: | 21번째 줄: | ||
|settings를 경유해 부르기 | |settings를 경유해 부르기 | ||
|settings에 지정된 유저모델을 불러오는 것. | |settings에 지정된 유저모델을 불러오는 것. | ||
− | |from | + | 문자열이 반환되어 쓰인다. |
+ | |||
+ | (권장되는 방법) | ||
+ | |<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 | + | (권장되는 방법) |
− | + | |<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가 담겨서 가기 때문에 view에서 user모델에 대한 사용이 없더라도 <code><nowiki>{{user}}</nowiki></code>을 통해 바로 유저모델을 사용할 수 있다. | |
+ | ==user 안의 속성.== | ||
장고에서 사용하는 user의 하위속성엔 무엇이 있을까? | 장고에서 사용하는 user의 하위속성엔 무엇이 있을까? | ||
{| class="wikitable" | {| class="wikitable" |
2022년 5월 3일 (화) 09:23 판
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: |