如果我不在Web2py中使用layout.html,如何将Ajax包含到View中

时间:2015-03-31 03:21:41

标签: web2py

我正在使用html模板进行我不使用layout.html的项目。我从视图中删除了{{extend 'layout.html'}},但是,我仍然想使用views/web2py_ajax.html

我尝试了几件事:首先我尝试将{{include 'web2py_ajax.html'}}放入new_template.html然后{{include}},但这不起作用。

然后,我将views/web2py_ajax.html文件中的代码复制到我的new_template.html视图中,但似乎没有效果。

当我说new_template.html时,我的意思是我使用的html模板不是layout.html

head的{​​{1}}中,new_template.html的所有css个链接和js脚本下我放置了这个:

new_template.html

然后,在我{{include 'web2py_ajax.html'}} {{ response.files.insert(0,URL('static','css/web2py.css')) response.files.insert(1,URL('static','css/bootstrap.min.css')) response.files.insert(2,URL('static','css/bootstrap-responsive.min.css')) response.files.insert(3,URL('static','css/web2py_bootstrap.css')) }} 的{​​{1}}中:

body

我测试了new_template.html {{include}} ,错误消息是纯黑色文本,而不是带有白色文本的红色背景框中的错误消息。我知道必须有一个更好的方法来测试这个,但我有点迷失。这样做的最佳方式是什么?

我很感激这方面的帮助。

1 个答案:

答案 0 :(得分:0)

您必须在包含web2py_ajax.html之前完成response.files,因为该视图包含response.include_files()调用,该调用实际上会生成HTML以加载页面中的所有文件。所以,它应该是:

{{
  response.files.insert(0,URL('static','css/web2py.css'))
  response.files.insert(1,URL('static','css/bootstrap.min.css'))
  response.files.insert(2,URL('static','css/bootstrap-responsive.min.css'))
  response.files.insert(3,URL('static','css/web2py_bootstrap.css'))
}}
{{include 'web2py_ajax.html'}}

您还必须确保web2py_ajax.html加载的所有静态资产实际可用(例如,web2py.js必须位于应用程序的/ static / js文件夹中)。

最后,您要加载的特定页面的视图必须以:

开头
{{extend 'new_template.html'}}

虽然您不必使用脚手架应用程序中的layout.html布局,但如果您从头开始创建自己的布局,仍建议您从layout.html的头部复制一些代码。从脚手架应用程序作为基础开始,然后删除不需要的东西也是一个好主意 - 这样你就可以从一开始就在正确的位置拥有所需的静态资产。