带有横向导航栏的Django一页网站

时间:2018-11-02 06:43:52

标签: ajax django

我当前的设置如下(主要来自here):

enter image description here

这是我的function pizzaFactory(ingArg, pricArg, sizArg) { const argsValid = [ingArg, pricArg, sizArg].every(arg => arg !== undefined) const ingredValidated = argsValid ? ingArg : ["pepperoni", "cheese", "tomato sauce", "lots and lots and lots and lots and lots of love"]; const priceValidated = argsValid ? pricArg : 125; const sizeValidated = argsValid ? sizArg : 'Small'; return { ing: ingredValidated, pric: priceValidated, siz: sizeValidated, deliver: function() { console.log(`Pizza Ingredients: ${ingredValidated}`); console.log(`Price: ${priceValidated}`); console.log(`Size: ${sizeValidated}`); } }; } let ingredients = ['cheese', 'tomato sauce', 'hate']; const pizza1 = pizzaFactory(ingredients, 150, "Large"); pizza1.deliver(); const pizza2 = pizzaFactory(); pizza2.deliver();视图的结果。我打算做的是将这两个侧边栏保持在原位置,仅刷新home

我的问题:django对此的明显解决方案是什么?

从目前为止我所阅读的内容看来,它似乎是在使用Ajax来查看用户单击侧边栏的确切位置,然后仅返回HTML的一部分,即content part,其中所有div是。 (或返回JSON并根据JSON值刷新content吗?)

我需要避免刷新整个页面,这似乎没有用。我可能会忘记Ajax,而只是在单独的视图上运行,但是每次都要根据用户,需要传递一个上下文变量来填充边栏,这似乎是一个过大的选择。

更具体:在导航栏上按一个按钮,即div-链接到另一个页面。为了使其仅刷新页面的一部分,按钮应该触发什么?它应该触发一个jQuery函数还是有更好的选择?

1 个答案:

答案 0 :(得分:1)

如果您只关心左侧边栏的计算,则可以进行缓存

Django允许缓存part of page-侧边栏是缓存的理想选择。如果侧边栏对于用户而言是不同的(我至少看到playlists菜单项),那么也可以为每个用户实现片段缓存,请查看文档的Vary on headers部分。

使用ajax将使您的开发过程复杂化-在用户端等生成html / json编码/渲染它,等等。现在几乎没有人以这种方式使用django。如果您需要纯单页应用程序,那么我建议您看一下javascript框架,例如Angular,Vue或React + Django API后端。