使用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)
答案 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将自动为您解析图像源。好处之一是,如果您有一个用于蓝图的自定义静态文件夹,则无需担心显式指定它,而只需编写文件的相对名称。