V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
vipppppp
V2EX  ›  Python

求助 flask 关于静态图片访问问题

  •  1
     
  •   vipppppp · Apr 3, 2018 · 5131 views
    This topic created in 2952 days ago, the information mentioned may be changed or developed.
    讨厌做伸手党,无奈查阅了很多资料,源码也找不到,作为一名新手,来这儿求助。

    我们的项目是前后端分离的,在图片返回时,我返回了一个图片的完整 url,如‘ http://127.0.0.1:8888/image/1.jpg
    然后我自己写了个接口,也能够成功访问。这个我已经成功实现了!

    困惑我的是,flask 已经默认注册了一个路由
    <Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>
    我的想法是,如果这个默认路由可用,那么我也不用自己去写一个接口

    但如果我直接访问: http://127.0.0.1:8888/static/1.jpg
    在 static 目录下也放置了 1.jpg 这张图片,访问得到的是 404,这我就不是很明白了~~

    望大神能解答一下,或者提供一点资料,万分感谢
    12 replies    2020-04-02 09:11:54 +08:00
    lioncui
        1
    lioncui  
       Apr 3, 2018
    检查一下 static 目录的位置,默认是在工程的根目录
    vipppppp
        2
    vipppppp  
    OP
       Apr 3, 2018
    @lioncui
    你的项目可以直接这样访问吗?
    就是随便新建一个 html,然后写一句<img src="http://127.0.0.1:8888/static/1.jpg">,而不是在 template 渲染
    我觉得不是工程的问题,我新建了工程也不能这样访问。。
    rogwan
        3
    rogwan  
       Apr 3, 2018 via Android
    看描述,貌似是你路径写的不对,试试 app/static/image/1.jpg 这样的路径
    TICE
        4
    TICE  
       Apr 3, 2018
    Nging 之类的服务器,有进行配置静态文件夹路径吗?
    TICE
        5
    TICE  
       Apr 3, 2018
    location ^~ /static/ {
    root /home/user_name/porject/app; # 静态文件根目录,根据项目情况更改
    vipppppp
        6
    vipppppp  
    OP
       Apr 4, 2018
    谢谢各位了,已经自己解决了~~
    hongshaoyuancn
        7
    hongshaoyuancn  
       Oct 9, 2018
    想知道楼主本地 static 访问图片是怎么解决的
    vipppppp
        8
    vipppppp  
    OP
       Oct 9, 2018
    @hongshaoyuancn
    你使用的是 flask 自带的测试服务器吗
    没用 Nginx 做静态文件代理?
    hongshaoyuancn
        9
    hongshaoyuancn  
       Oct 9, 2018
    @vipppppp 哈 好了 我是本地的 static 路径也错了 哈 ~~~~
    Cyclen
        10
    Cyclen  
       Apr 2, 2020
    1111111111 楼主还在吗我也遇到了一样的问题
    Cyclen
        11
    Cyclen  
       Apr 2, 2020
    @hongshaoyuancn 你好我也出问题了但是我没解决 可以请教一下吗
    vipppppp
        12
    vipppppp  
    OP
       Apr 2, 2020
    @Cyclen 这个问题太久了,现在也没用 flask
    如果没记错的话应该是文件路径问题,
    尤其是这句
    我的目录结构是
    - apps
    __init__.py
    - static
    我的 Flask 是在__init__文件下初始化的,要写成这样
    app = Flask(__name__, template_folder="../templates", static_folder="../static")

    意思就是你的 static 文件夹和你的 Flask 对象初始化的 static_folder,要对应
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1155 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 17:16 · PVG 01:16 · LAX 10:16 · JFK 13:16
    ♥ Do have faith in what you're doing.