设置app.route(/ something / <argument>)时/ static /的位置更改为/ something / static /

时间:2019-11-08 08:36:37

标签: javascript css flask jinja2

使用index.html加载路由index()是可行的-它从base.html开始。就像其他一些在路径路径中没有<arguments>的模板一样。

但是,在app.route('/ channel /')上,我看到Flask Server尝试从base.html而不是/channel/static/etc提供静态消息(从/static/etc加载),因此, CSS无法渲染。无论我在该app.route('/ here /')中输入什么,Flask都会在该页面上渲染静态信息:/here/static/etc,因此是CSS / JS 404。

我尝试从下面更改base.html中静态内容的加载:

<link href="static/css/font-face.css" rel="stylesheet" media="all">

<link href="/static/css/font-face.css" rel="stylesheet" media="all">

此问题尚未解决。最终我得到了一个空白页面,根本没有内容呈现。让我觉得这与app.route()函数有关。

应用程序结构:

<dock>
  <bot>
  <nginx>
  <zigweb>
    <app>
        <templates>
             base.html
             etc.html
        <static>
            <css>
            <etc>

我正在使用Flask开发服务器。

加载channel.html时的控制台

INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:58:08] "GET /channel/launch_logic HTTP/1.1" 200 -
INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:58:09] "GET /channel/static/images/icon/signally.png HTTP/1.1" 404 -
INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:58:09] "GET /channel/static/images/icon/avatar-icon.png HTTP/1.1" 404 -

加载index.html时的控制台

INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:59:19] "GET / HTTP/1.1" 200 -
INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:59:20] "GET /static/vendor/animsition/animsition.min.css HTTP/1.1" 200 -
INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:59:20] "GET /static/vendor/font-awesome-4.7/css/font-awesome.min.css HTTP/1.1" 200 -
INFO:werkzeug:127.0.0.1 - - [08/Nov/2019 13:59:21] "GET /static/vendor/bootstrap-4.1/bootstrap.min.css HTTP/1.1" 200 -

BASE.HTML https://pastebin.com/9FgqE2z9

CHANNEL.HTML


{% extends "base.html" %}
{% block content %}
<h1>hello</h1>

{% endblock %}

Routes.py(用于channel())

@app.route('/channel/<username>')
def channel(username):
    user = User.query.filter_by(username=username).first()
    return render_template('channel.html', user=user)

1 个答案:

答案 0 :(得分:0)

在base.html中,您已将图像的URL指定为static/images/icon/signally.png。在这种情况下,相对于当前路径的URL,由于当前路径的基础是/channel/static/images/icon/signally.png,因此它变为/channel/

您可以将图像源更改为src="/static/images/icon/signally.png",它将正确解析路径。

或者,也许更合乎需要,您可以使用url_for('static', '<filename>')作为评论中提到的人。在这种情况下,Flask将自动为您解析图像源。好处之一是,如果您有一个用于蓝图的自定义静态文件夹,则无需担心显式指定它,而只需编写文件的相对名称。