我当前的设置如下(主要来自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函数还是有更好的选择?
答案 0 :(得分:1)
如果您只关心左侧边栏的计算,则可以进行缓存
Django允许缓存part of page-侧边栏是缓存的理想选择。如果侧边栏对于用户而言是不同的(我至少看到playlists
菜单项),那么也可以为每个用户实现片段缓存,请查看文档的Vary on headers部分。
使用ajax将使您的开发过程复杂化-在用户端等生成html / json编码/渲染它,等等。现在几乎没有人以这种方式使用django。如果您需要纯单页应用程序,那么我建议您看一下javascript框架,例如Angular,Vue或React + Django API后端。