Dojango - Dojo + Django, Как "обернуть" django.contrib.auth и django-регистрация для AJAX, использование одной страницы - PullRequest
1 голос
/ 29 октября 2011

Я новичок в Додзё и Джанго. Тем не менее, я пытаюсь написать одностраничное приложение, и я не понимаю, как использовать встроенные в Django инструменты аутентификации, поскольку они разработаны на основе традиционной модели страниц на просмотр в Django.

Я бы хотел, чтобы все формы, как для моего приложения, так и для аутентификации и регистрации django, отображались в <div dojoType="dijit.layout.contentPane" id="mainPane"></div>. Я освоил получение представлений, отображаемых как Dojango @json_response; однако я не знаю, как «обернуть» существующие представления, чтобы они не ожидали загрузки страниц.

Существует ли обычная стратегия для одностраничных приложений Django? Мне нравится ORM Django и пользовательский интерфейс Dojo, но их сложно полностью интегрировать. Спасибо.

##############################################################
#         #                                        #         #
#  LOGOUT #                                        #  DISP   #
#         ##########################################         #
#  REGSTR #                                        #  DISP   #
#         #  MAINPANE                              #         #
#  DO_IT  #                                        #  DISP   #
#         #  Forms, views, etc.                    #         #
#  CNTRL  #  using dojo.xhrGET, xhrPUT             #  DISP   #
#         #                                        #         #
#  QUIT   #                                        #  DISP   #
#         #                                        #         #
#         ##########################################  DISP   #
#         #                                        #         #
#         # STATUS: MESSAGE                        #         #
#         #                                        #         #
##############################################################

Edit: просто чтобы быть более явным, я хочу поток, как это:

  1. Пользователь нажимает кнопку «DO_IT».
  2. Dojo xhrGET получает форму DO_IT и заменяет ею содержимое MAINPANE.
  3. Пользователь что-то делает с формой DO_IT и dojo xhrPOSTs выполняет действие пользователя.
  4. Dojo заменяет содержимое MAINPANE ответом.
  5. Прибыль

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

1 Ответ

1 голос
/ 30 октября 2011

Вы написали это в значительной степени.Представление django может просто вернуть нужный фрагмент HTML в div #MAINPANE, и вы вставляете его, устанавливая свойство .innerHTML узла MAINPANE.

Как только пользователь вошел в систему, вся аутентификация должна произойти автоматическидаже для вызовов Ajax, так что вам не нужно об этом беспокоиться.Но вам нужно подумать о том, что произойдет, если аутентификация не удастся - в итоге вы можете просто сбросить сообщение 403 Permission Denied в ваш раздел #MAINPANE.

Есть несколько других тонкостей для такого дизайна веб-страницы - в основномстановится невозможным создавать закладки для страниц, если вы не предоставите ссылку «постоянная ссылка», которая приведет вас на страницу с требуемым контентом, загруженным в раздел MAINPANE.А нажатие на перезагрузку в браузере вызывает удивление, когда он не перезагружает текущее представление страницы, а возвращается к «домашнему» представлению.

Или вы можете просто сделать это по-старому, используя теги FRAME:)

...