Django에서 context_processors.py를 사용하는 동안 로그인 페이지에서 사용자 요청을 피하는 방법은 무엇입니까?

João de Sousa

나는에 연결되어있는 사용자 정보와 변수를 전달하고 싶었 Clients에 OneToOneField을 통해 모델 django.contrib.auth.models에, base.html파일.

그래서 context_processors.py다음 코드로를 만들었습니다.

from django.contrib.auth.models import User

    def userData(request):  
        user = request.user
        u = User.objects.get(username=user)
        us = u.clients.first_name
        uv = u.clients.avatar
        return {
            'u': u,
            'us': us,
            'uv': uv
        }

로그 아웃 할 때까지 모든 것이 잘 작동했습니다.

다시 로그인을 시도하면 accounts/loginURL이 표시되고

DoesNotExist at /accounts/login/
User matching query does not exist.
빌렘 반 온셈

그럼 당신은 request.user 이다 이미 User그래서 다시 가져별로 의미가 있습니다.

사용자가 로그인했는지 간단히 확인할 수 있습니다.

def userData(request):
    if request.user.is_authenticated:
        return {
            'u': request.user,
            'us': request.user.clients.first_name,
            'uv': request.user.clients.avatar,
        }
    return {}

참고 : 이름 clients입니다 plular 이이 제안 때문에, 수집Client들. 일반적으로 모델 이름은 단수 ( Client대신 Clients)이며 a의 관련 이름은 OneToOneField직접 지정하는 경우에도 단수 여야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관