Python Flask如何直接加载下载的网页模板及相关资源(HTML、CSS、JS、Image)?

python flask如何直接加载下载的网页模板

  • 问题
  • 解决办法
  • 问题

    本人网页开发小白,刚学了用flask,下载了一套网页模板,启动一个网页的确很简单,但是发现无论怎么改这里的 static_folder值都无法找到CSS,JS,IMAGE,FONT等资源
    app = Flask(name, static_folder=‘static’, template_folder=‘templates’)
    报错如下:

    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /css/bootstrap.css HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /css/bar.css HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /css/style.css HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /css/style4.css HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /js/script.js HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /js/simplyCountdown.js HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /css/simplyCountdown.css HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /js/amcharts.js HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /js/bootstrap.min.js HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /images/clone.jpg HTTP/1.1" 404 -
    127.0.0.1 - - [04/Mar/2023 22:03:00] "GET /images/profile.jpg HTTP/1.1" 404 -
    

    搜出来的大多数文章都只是说目录要放在static下,或者是要修改html文件里href后面的路径,用url_for之类的。
    改目录怎么改都不管用。
    最笨的办法就是把html里的href后的路径改了,我也试过,有用,比如把
    href=“css/bootstrap.css” 改成 href=“/static/css/bootstrap.css”,一个index.html就有十几处,改了后的确渲染成功了,但是当点击其他链接要打开其他html时又提示找不到。
    所以不可能把哪些全都改一遍吧,太费劲了,应该还是flask的参数配置没对,终于参考这篇找到了真正的解决办法。

    解决办法

    在不改动任何下载的网页模板html情况下,
    加上static_url_path=‘’,就可以加载指定的文件夹里的静态文件。我把静态文件也指定到templates里,从而让他们和html文件保持在同一目录,跟下载下来的一样,就可以完美加载所有模板里的资源了。

    from flask import Flask, request, render_template
    
    app = Flask(__name__, static_url_path='', static_folder='templates', template_folder='templates')
    
    @app.route('/', methods=['GET', 'POST'])
    def home():
        return render_template('/index.html')
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Flask如何直接加载下载的网页模板及相关资源(HTML、CSS、JS、Image)?

    发表评论