Django: переменная запроса процессора контекста шаблона - PullRequest
0 голосов
/ 16 февраля 2010

Я пытаюсь реализовать django-facebookconnect , поскольку мне нужно проверить, вошел ли пользователь через Facebook или обычный пользователь.

В шаблоне я могу проверить, вошел ли пользователь через Facebook, установив request.facebook.uid такие как:

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

Для этого мне нужно передать is_facebook': request.facebook.uid шаблону, и я буду использовать его повсюду, поэтому я хочу попробовать применить его к существующему процессору контекста шаблона и вызвать приведенный выше фрагмент в base.html, и он отлично работает для объектов Foo:

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()}

Я могу перечислить объекты Foo в любом представлении без каких-либо проблем, однако для этого нового is_facebook это не получается, просто ничего не возвращается.

Если я передам 'is_facebook': request.facebook.uid в каждом отдельном представлении, это будет работать, но мне нужно это глобально для любого рендеринга представления.

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

Если у вас есть доступ через объект request, зачем вообще нужно добавлять специальный логический is_facebook? Просто включите встроенный django.core.context_processors.request, и это гарантирует, что request присутствует во всех шаблонах, тогда вы можете сделать это:

{% if request.facebook.uid %}
0 голосов
/ 16 февраля 2010

Это может быть проблема времени. Убедитесь, что Общее промежуточное программное обеспечение находится перед промежуточным программным обеспечением Facebook в вашем файле настроек. Возможно, вы сможете отладить и посмотреть, когда промежуточное ПО facebook изменяет запрос и когда вызывается ваш контекстный процессор. Это может дать вам некоторое представление о том, почему это происходит. Но, как сказал Даниэль, вы всегда можете просто использовать объект запроса в своих шаблонах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...