我有一个简单的问题。我在django中有一个功能齐全的站点,它有一个标题,菜单和页脚,它永远不会改变,内容会发生变化。我的简化模板如下所示:
base.html
<html>
...header...
<body>
...menu...
{%block content%}{%endblock%}
...footer...
</body>
</html>
和content.html
{%extends 'base.html'%}
{%block content%}...content according to selected menu item...{%endblock%}
到目前为止,一切正常。 现在我决定对于启用了javascript的用户,我可以添加ajax调用,所以每当他们点击上面的菜单项(将有onClick)时,只会升级“内容”块。我的问题是:我可以重用我的原始视图并以某种方式修改它以适应两种需要 - 常规调用和ajax调用?或者我应该以某种方式重新设计我的模板?或者我是否需要为每个人单独查看? 我的简化视图如下:
def main(request,site):
...some site processing...
return render_to_response('content.html',{'content':...site content...})
谢谢
答案 0 :(得分:0)
您可以在视图中查看ajax调用并给出相应的响应:
if request.is_ajax():
#do something
看看这里:https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.is_ajax
希望这会导致正确的方向。
答案 1 :(得分:0)
我认为使用url
方法中jquery.load()
参数的方便功能比使用django模板和视图要容易得多。 jquery docs sais
.load()
方法[...]允许我们指定一部分 要插入的远程文档。这是通过特殊的方式实现的 url参数的语法。如果有一个或多个空格字符 包含在字符串中,第一个字符串后面的字符串部分 假设space是一个确定内容的jQuery选择器 要加载。
在您的JavaScript事件处理程序中,您只需编写如下内容:
$('.content').load('/otherPage.html .content');
就是这样。