Django 템플릿에서 사용자 프로필에 액세스하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/422140

  •  05-07-2019
  •  | 
  •  

문제

나는 그것을 사용하여 추가 사용자 당 정보를 저장하고 있습니다 AUTH_PROFILE_MODULE.

우리는 Django 템플릿에서 사용자에게 액세스 할 수 있습니다. {{ request.user }} 그러나 프로파일이 함수를 통해서만 액세스 할 수 있으므로 프로파일의 필드에 액세스하는 방법 user.get_profile() ?

매번 프로필을 템플릿에 명시 적으로 전달해야합니까?

도움이 되었습니까?

해결책

사용 {{ request.user.get_profile.whatever }}. Django의 템플릿 언어는 자동으로 호출 가능한 것을 호출합니다.이 경우 .get_profile() 방법.

다른 팁

왜 다른지 확실하지 않지만 {{request.user}} 대신 {{user}}를 사용해야합니다.

예 request.user.get_profile을 사용하여 템플릿에서 프로필에 액세스 할 수 있습니다.

그러나 작은 것이 있습니다 경고: 모든 사용자에게 프로필이있는 것은 아니며,이 경우 관리자 사용자의 경우였습니다. 그래서 직접 전화하십시오 {{ request.user.get_profile.whatever }} 템플릿에서 이러한 경우 오류가 발생합니다.

모든 사용자가 항상 프로필을 가지고 있다고 확신하는 경우 템플릿에서 호출하는 것이 안전합니다. 그렇지 않으면 get_profile() 시야에서 Try-Xcept 블록 내에서 템플릿으로 전달하십시오.

django> 1.5를 사용하는 경우 더 이상 사용할 수 없습니다. get_profile.

레거시 앱이 있으면 제거해야합니다. AUTH_PROFILE_MODULE = 'myapp.profile' 당신의 settings.py.

사용하는 경우 models.OneToOneField(User) 프로필 클래스에서 간단히 사용할 수 있습니다

{{ request.user.profile.whatever }}

Django 템플릿에서

누구나 도움이되면 템플릿에서 다음을 사용했습니다.

사용자 이름: {{ user.username }}

사용자 풀 이름 : {{ user.get_full_name }}

사용자 그룹 : {{ user.groups.all.0 }}

이메일: {{ user.email }}

세션은 다음에서 시작되었습니다. {{ user.last_login }}

샘플 결과는 다음과 같습니다.

사용자 : 감사인 Ezio

사용자 그룹 : AuditGroup

사용자 이름 : testuser03

이메일 : testuser03@auditor.com

세션은 2018 년 4 월 16 일 오후 9시 38 분에 시작되었습니다.

감사 :)

일하고 있는 !

프로필 모델에서 관련 _name을 제공합니다

user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)

그런 다음 템플릿 사용에서. 여기에서 Company_Name은 프로필 테이블의 필드입니다

{{ request.user.user_profile.company_name }}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top