1

我是 Dojo 和 Django 的新手。也就是说,我正在尝试编写一个单页应用程序,但我不明白如何利用 Django 的内置身份验证工具,因为它们是围绕传统的 Django 每页视图模型设计的。

我希望在<div dojoType="dijit.layout.contentPane" id="mainPane"></div>. 我已经掌握了将视图呈现为 Dojango 的@json_response显示方式;但是,我不知道如何“包装”现有视图,以便它们不会期望页面加载。

单页 Django 应用程序有什么常规策略吗?我喜欢 Django 的 ORM 和 Dojo 的 UI,但它们似乎很难完全集成。谢谢。

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

编辑:为了更明确,我想要这样的流程:

  1. 用户单击“DO_IT”按钮。
  2. Dojo xhrGETs DO_IT 表单并用它替换 MAINPANE 的内容。
  3. 用户使用 DO_IT 表单执行某些操作,并且 dojo xhrPOSTs 用户的操作。
  4. Dojo 将 MAINPANE 的内容替换为响应。
  5. 利润

完成此任务的最佳/传统/常见/记录最多的方法是什么。我知道可能有很多可能的方法。我正在寻找一些不太容易 f@#$-up 作为新手的东西。

4

1 回答 1

1

You've pretty much spelt it out. The django view can just return the chunk of HTML that you want in the #MAINPANE div, and you insert it by setting the MAINPANE node's .innerHTML property.

Once the user has logged in all the authentication should happen automagically even to Ajax calls, so you don't have to worry about that. But you do have to consider what happens if the authentication fails - you could end up just dumping a 403 Permission Denied message into your #MAINPANE div.

There's a few other subtleties to this kind of web page design - mostly it becomes impossible to bookmark pages unless you provide a 'permalink' link somewhere that gets you to the page with the required content loaded into the MAINPANE div. And hitting reload in the browser causes surprise when it doesn't reload the current view of the page but jumps back to the 'home' view.

Or you could just do it the old skool way with FRAME tags :)

于 2011-10-30T17:10:31.197 回答