javascript - 如何让 Flask 为我的 .js 文件提供服务?

标签 javascript python html flask

我正在使用 Python、Flask 和 .js 文件进行一些编码,所有这些文件都链接了一些 HTML 和 CSS。我的问题是,我有一个下拉菜单和一个可以隐藏和取消隐藏密码文本的按钮,但是当在 Flask 中运行时,这一面不起作用,我相信它与 javascript 有关。当我在本地运行 HTML 文件而不是通过 Flask 时,这个函数工作得很好,但我完全不知道从这里去哪里?

就我已经做的事情而言,确保我的文件结构正确,并且这些 .js 文件位于 static 文件夹中(CSS 样式表是从其中完美提取的)。我链接 .js 文件的脚本标记都位于 body 标记的末尾,而不位于 head 标记内。

<script src="../static/js/vendor/jquery.js"></script>
<script src="../static/js/app.js"></script>
<script src="../static/js/vendor/foundation.js"></script>
<script src="../static/js/vendor/what-input.js"></script>

这是我用于 Flask 的应用程序文件以及用于运行它的简单代码(如果有帮助的话)?

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route("/")

def render_static():

    return render_template('splash_page.html')

@app.route("/account")

def account_page():

    return render_template('account.html')

if __name__ == '__main__':
    app.run(debug = True)

下面你会发现我在 Flask 中用作模板的 HTML 代码,这是在进行下面建议的更改之前的代码 -

<!doctype html>
<html class="no-js" lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Home Page</title>

    <link href="../static/css/app.css" rel="stylesheet" type="text/css">
    <link href="../static/css/foundation.css" rel="stylesheet" type="text/css">

  </head>

  <body>
    <div class="top-bar">
  <div class="top-bar-left">
    <ul class="dropdown menu" data-dropdown-menu>
      <li class="menu-text">Premier League Pro</li>
      <li>
        <a href="/account">Account</a>
        <ul class="menu vertical">
          <li><a href="/my account">My Account</a></li>
          <li><a href="#">Settings</a></li>
          <li><a href="#">Log Out</a></li>
        </ul>
      </li>
      <li><a href="#">Predictor</a></li>
      <li><a href="#">Odds Calculator</a></li>
    </ul>
  </div>
  <div class="top-bar-right">
    <ul class="menu">
      <li><input type="search" placeholder="Search"></li>
      <li><button type="button" class="button">Search</button></li>
    </ul>
  </div>
</div>

<div class="row">
    <div class="columns large-3"></div>
    <div class="columns large-6">
        <br>
        <br>
        <form class="show-password">
          <label for="username">Your login</label>
          <input type="text" value="" placeholder="Enter Username" id="username">
          <div class="password-wrapper">
            <label for="password">Your password</label>
            <input type="password" value="" placeholder="Enter Password" id="password" class="password">
            <button class="unmask" type="button" title="Mask/Unmask password to check content">Unmask</button>
          </div>
        </form>
    </div>

    <a class="button small" href="#">Sign In</a>
    <div class="columns large-3"></div>
</div> 

    <script src="../static/js/app.js"></script>
    <script src="../static/js/vendor/foundation.js"></script>
    <script src="../static/js/vendor/what-input.js"></script>
    <script src="../static/js/vendor/jquery.js"></script>

  </body>
</html>

如果有帮助的话,请提及我正在使用 Foundation 作为 CSS 来帮助编辑并使我的网页看起来更漂亮。

当使用下面建议的方法来更改脚本标签时,我在浏览器中收到如下错误 -

jinja2.exceptions.TemplateSyntaxError: expected token ',', got 'static'

最佳答案

您应该使用以下链接链接您的 js 文件:

<script src="{{ url_for('static', filename='js/vendor/jquery.js') }}"></script>

对所有 js 文件执行此操作。 希望有帮助。如果您还有任何问题,请告诉我。

为了进一步调查,启用 flask Debug模式 要启用 Debug模式,您可以在运行服务器之前导出 FLASK_DEBUG 环境变量:

$ export FLASK_DEBUG=1
$ flask run

这将向您显示浏览器中更详细的错误和堆栈跟踪。

关于javascript - 如何让 Flask 为我的 .js 文件提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316331/

相关文章:

html - 在手机的 html 电子邮件中翻转交替列

html - 当父级的框大小为边框框时,如何获得具有绝对位置的流体框?

javascript - Socketio 配置错误,无法连接/登录连接

javascript 体积计算器,根据宽度、长度和深度

javascript - 如何每秒将变量增加 (x) 个单位,然后将变量与 Date() 一起使用来确定自月初以来的单位数

python - 在 matplotlib 中更改图例中的标记

python - 如何将二进制图像转换为 python 中的内存数据结构?

python - 根据传递给构造函数的参数实现Python类

javascript - Shopify:结合 HTML 和 JavaScript

阻止加载特定 url 的 javascript?