【问题标题】:jquery .load with python flaskjquery .load 与 python 烧瓶
【发布时间】:2014-04-06 20:15:13
【问题描述】:

我试图在我的烧瓶应用程序中使用 jquery .load 来添加一个 div,每次用户按下按钮添加一个新的 div,但它找不到 html 文件。

有问题的函数。

$(document).ready(function(){
        $("#add").click(function(){
            $("#form").load('/templates/info.html');
        })
});

info.html 文件仅包含 html 的一小段 div。

index.html 代码,我想在表单之后加载 info.html div。

  <form id="form" action="{{ url_for('get_data') }}" method="post">
        <input type="button" name="add" value="Add" id="add">
        <input type="submit" id="submit" value="To XML">
    </form>

/templates/info.html

 <div id="info">
     <label>name</label>
     <input type="text" name="name">
     <br>
     <label>asfd</label>
     <input type="text" name="asfd">
      <br>
 </div>

我不断收到这个 404 错误。

127.0.0.1 - - [04/Mar/2014 19:55:50] "GET /templates/info.html HTTP/1.1" 404 -

我在本地运行烧瓶应用程序,/template/info.html 是正确的路径。我只是不知道为什么它没有加载到那个 html 中。当我使用 jquery 函数和 .append() 并将长 html 字符串放入 append 函数时,我能够使其工作,但添加 info.html 变得更长我只想能够加载整个文件。

任何帮助将非常感谢。

【问题讨论】:

  • templates 只是一个文件夹。除非您明确要求,否则 Flask 不会提供内容。设置一个路由(@route('/info') 或类似的东西),渲染模板,然后请求 /info 而不是那个 URL。
  • 但是jquery不会在模板文件夹中查找,并加载html文件吗?
  • 文件夹用于文件系统。 jQuery 向网络服务器发送一个 GET 请求,并在 /templates/info.html 处请求资源。从那里开始,完全由 Flask 来确定 /templates/info.html 的实际含义。它可以将 URL 作为响应反向发回。 Flask 不像 /static/ 那样提供 /templates/ 的内容,这对你来说可能是一个更好的选择(尽管我建议改为创建一个实际呈现模板的路由,如下面的答案, 并使用 jQuery 加载它)。
  • 我编辑了我的问题,我想我明白你在说什么,但我不知道这是否是我想要做的。
  • 然后把它放到/static/而不是/templates/

标签: jquery python html flask


【解决方案1】:

您在烧瓶应用程序中的视图定义应返回 info.html。换句话说,您的烧瓶应用程序中应该有一个路由和一个方法:

@app.route('/info')
def info(name):
    return render_template('info.html')

现在您可以在 jquery 代码中加载 url /info。默认情况下,Flask 在模板文件夹中查找模板,因此无需在 URL 中明确提及

【讨论】:

  • 它对我有用!正是我想要的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多