2010-02-15 2 views
0

django-facebookconnect을 구현하려고합니다. 사용자가 Facebook 또는 일반 사용자를 통해 로그인했는지 확인해야합니다. 사용자가 같은 request.facebook.uid 을 확인하여 페이스 북을 통해 로그인 한 경우 내가 확인할 수 있습니다 템플릿에서 Django : 템플릿 컨텍스트 프로세서 요청 변수

,이 들어

{% if is_facebook %} 
{% show_facebook_photo user %} 
{% endif %} 

, 나는 템플릿에 is_facebook': request.facebook.uid을 통과해야하고 나는 사방이 사용하게 될 따라서 나는 기존 템플릿 컨텍스트 프로세서에 적용하고 base.html에서 위의 snipplet 전화를 시도하려는, 그리고 푸 개체에 대해 잘 작동 :

def global_variables(request): 
    from django.conf import settings 
    from myproject.myapp.models import Foo 
    return {'is_facebook': request.facebook.uid,'foo_list': Foo.objects.all()} 

내가 푸 어떤 문제없이보기에서 개체를 나열 할 수 있습니다 그러나이 새로운 is_facebook에 실패하면 아무 것도 반환하지 않습니다.

모든 단일보기에서 'is_facebook': request.facebook.uid를 전달하면 작동하지만 모든보기 렌더링에 전역으로 필요합니다.

답변

1

request 개체를 통해 액세스 할 수있는 경우 특수 is_facebook 부울을 추가해야하는 이유는 무엇입니까? 그냥 django.core.context_processors.request에 내장이 request 모든 템플릿에 있는지 확인합니다, 당신은이 작업을 수행 할 수 있도록 :

{% if request.facebook.uid %} 
0

그것은 타이밍 문제 일 수 있습니다. 일반 미들웨어가 설정 파일의 Facebook 미들웨어보다 먼저 제공되는지 확인하십시오. 페이스 북 미들웨어가 요청을 수정하는시기와 컨텍스트 프로세서가 호출 된시기를 디버그하고 볼 수 있습니다. 그게 왜 이런 일이 일어나는가에 대한 단서를 줄 수 있습니다. 그러나 Daniel이 말했듯이 항상 템플릿에서 요청 개체를 사용할 수 있습니다.

관련 문제