V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2018-04-03 11:49:49 +08:00 · 4367 次点击
    这是一个创建于 2422 天前的主题,其中的信息可能已经有所发展或是发生改变。
    讨厌做伸手党,无奈查阅了很多资料,源码也找不到,作为一名新手,来这儿求助。

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

    意思就是你的 static 文件夹和你的 Flask 对象初始化的 static_folder,要对应
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3306 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:34 · PVG 20:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.