代码之家  ›  专栏  ›  技术社区  ›  Joe T. Boka

如果我不使用Web2py中的layout.html,如何将Ajax包含到视图中

  •  0
  • Joe T. Boka  · 技术社区  · 11 年前

    我正在为一个不使用 layout.html 。我删除了 {{extend 'layout.html'}} 但是,从视图中,我仍然希望使用 views/web2py_ajax.html .

    我尝试了两件事:首先,我尝试 {{include 'web2py_ajax.html'}} 在我的 new_template.html 然后 {{include}} 但那没用。

    然后,我从 视图/web2py_ajax.html 文件到我的 新建模板.html 视图,但这似乎不起作用。

    当我说 新建模板.html 我是说我使用的html模板不是 布局.html .

    head 新建模板.html ,在所有 css 链接和 js 的脚本 新建模板.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'))
      }} 
    

    然后,在 body 新建模板.html 我说:

    {{include}}
    

    我测试了 form submit 并且错误消息是纯黑色文本,而不是带有白色文本的红色背景框中的错误消息。我知道肯定有更好的方法来测试这个,但我有点迷路了。最好的方法是什么?

    我很感谢你的帮助。

    1 回复  |  直到 11 年前
        1
  •  0
  •   Anthony    11 年前

    您必须完成 response.files 在包含web2py_ajax.html之前,因为该视图包含 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的头部复制一些代码。从脚手架应用程序作为基础开始,然后删除不需要的内容也是一个好主意,这样您就可以从一开始就将所需的静态资产放在正确的位置。