首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask在移动app.py和静态文件夹后无法解析静态文件

Flask在移动app.py和静态文件夹后无法解析静态文件
EN

Stack Overflow用户
提问于 2019-02-28 20:43:09
回答 2查看 690关注 0票数 1

我正在打包我的Flask应用程序,在将app.py迁移到模块ship_comm之后,我无法解析静态URL,即使当我更改root_folder时,它正在选取新的模板路径。这是我的结构:

代码语言:javascript
复制
├── README.md 
├── requirements.txt 
├── setup.py 
└── ship_comm
    ├── app.py
    ├── config.py
    ├── database.py
    ├── db_models.py
    ├── devices.py
    ├── replay.py
    ├── router.py
    ├── routing.db
    ├── static
    │   ├── css
    │   │   └── main.css
    │   └── img
    │       ├── captain-ai-logo-small.png
    │       ├── captain-ai-logo-square.png
    │       ├── favicon.ico
    │       └── screenshot.png
    └── templates
        ├── devices.html
        ├── home.html
        ├── layout.html
        ├── messages.html
        ├── new_route.html
        ├── new_serial.html
        ├── new_udp.html
        └── routes.html

这是我对Flask应用程序的初始化

app = Flask(__name__, root_path='ship_comm')

这修复了我的TemplateNotFound错误的问题,但即使它应该能够在root_path中找到静态文件夹,它仍然无法找到它,对吗?我尝试过显式地声明static_folder='ship_comm/static'static_folder='static',但同样没有帮助。

我使用python -m ship_comm.app调用应用程序

这是我的layout.html,它现在缺少了徽标:

代码语言:javascript
复制
<!doctype html  lang="en">
<link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.ico') }}">
<title>Ship Comm Router</title>
<head>
    <!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<!-- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> -->

<!--- mobile stuff --->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8"> 
</head>
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
<div class="container-fluid">
<a href="/"><h1>Ship Comm Router</h1></a>
{%- for category, message in get_flashed_messages(with_categories=true) %}
  <p class="flask {{ category }}-flash">{{
    "Error: " if category == 'error' }}{{ message }}</p>
{%- endfor %}
<hr>
{% block body %}{% endblock %}
<hr>
<div id="footer">
    <!--<img width="50px" src="../static/img/captain-ai-logo-small.png"/>-->
    <img width="50px" src="{{url_for('static', filename='img/captain-ai-logo-small.png')}}"/>
    Developed by Captain AI - 2018
</div>
</div>
<!-- <address>Flask and SQLAlchemy powered Serial and UDP Router</address> -->

我使用的是Python3.6.7和Flask==1.0.2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-28 22:26:32

root_path应自动计算。如果要设置,请尝试使用绝对路径(假设您在app.py中创建应用程序

代码语言:javascript
复制
import os

dir_path = os.path.dirname(os.path.realpath(__file__))
app = Flask(__name__, root_path=dir_path)

那么你的静态文件应该可以工作了。

票数 2
EN

Stack Overflow用户

发布于 2019-10-12 23:52:00

我和你的结构类似,在尝试按照教程为我的小webapp创建Docker容器时遇到了这个问题。我最终想将这个容器部署到一个QNAP,看看我是否可以自己托管这些东西。对我起作用的是:

代码语言:javascript
复制
from flask import Flask, render_template

app = Flask(__name__, template_folder='../templates', static_folder="../static")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54926036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档