Использование аутентификации сайта администратора django в представлении без прав администратора - PullRequest
0 голосов
/ 18 мая 2011

Я пишу простое приложение django для управления страницами на сайте. Страницы создаются через сайт администратора и могут быть просмотрены с помощью функции «просмотр на сайте». Каждая страница имеет «опубликованное» логическое значение, определяющее, должно ли представление, отображающее страницы, отображать его на сайте. Конечно, после того, как я изменил представление в отношении «опубликованной» ссылки «просмотр на сайте» страницы администратора, страница также не будет отображаться. Но я хочу иметь возможность предварительного просмотра неопубликованных страниц в процессе редактирования.

Поэтому я решил изменить представление, чтобы проверить, есть ли аутентифицированный пользователь, связанный с запросом. Например:

if request.user.is_authenticated() and request.user.is_staff:
    manager=Pages.objects    #returns all pages
else:
    manager=Pages.live       #only returns published pages

Затем соответствующий менеджер передается в get_object_or_404 вместе с идентификатором страницы, полученным из URL

Однако в представлении пользователь всегда является анонимным, даже если пользователь, прошедший проверку подлинности на сайте администратора, щелкает ссылку «просмотр на сайте». Таким образом, «живой» менеджер всегда используется, и у меня тот же результат, что и раньше: 404, когда неопубликованные страницы доступны с сайта администратора. Это так, как он должен себя вести? Я действительно думал, что информация о сеансе будет унаследована от сеанса администратора сайта.

Я был бы признателен за любое направление здесь, потому что я, возможно, не слишком ясно, как это должно работать. Мне не нужен механизм входа на сайт, поэтому я надеялся получить выгоду от входа администратора, чтобы получить возможность просматривать неопубликованные страницы в администраторе.

Спасибо

1 Ответ

0 голосов
/ 19 мая 2011

Проблема исчезла.Теперь, если я вошел в систему с правами администратора, я могу просматривать неопубликованные страницы, в противном случае я получаю ошибку 404.

К сожалению, я не уверен, почему это начало работатьЯ запустил некоторые обновления пакетов (среди них не было ни django, ни Firefox), и мне пришлось перезапустить мою (archlinux) машину.Когда я перезапустил сервер разработки django и снова протестировал функцию, все было хорошо.Я подозреваю, что виновником был Firefox, но это только предположение.

В любом случае, спасибо всем, кто задумался над этой проблемой.Я могу перестать выдергивать волосы.

...