You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django本地开发如何配置从远程URL加载静态与媒体文件

Django本地开发对接远程静态/媒体文件配置指南

方案一:零依赖直连远程文件地址(仅读场景推荐)

如果本地开发只需要展示生产环境的媒体、静态文件,不需要在本地操作上传文件到服务器,不需要安装任何第三方包,直接改本地配置即可:

  • 打开本地开发环境专属的settings.py配置,修改媒体、静态文件的URL前缀为生产域名地址:
# 仅本地开发环境生效,不要同步到生产配置
DEBUG = True
# 媒体文件地址指向生产域名
MEDIA_URL = "https://example.com/media/"
# 如果静态文件也托管在生产域名下,同步修改STATIC_URL
STATIC_URL = "https://example.com/static/"

该方案下,所有模板、接口中通过{{ obj.file.url }}生成的文件地址会直接指向生产服务器,不需要本地服务代理转发,访问速度最快。但本地开发时上传的文件会存在本地默认路径,不会同步到远程服务器,仅适合纯读取展示的开发场景。


方案二:django-storages FTP对接远程存储(支持读写场景)

如果本地开发时需要通过Django后台、接口上传文件直接写入服务器的media目录,就用你提到的django-storages FTP存储方案,完整配置步骤如下:

  1. 先安装依赖包
    pip install django-storages
    
  2. 在INSTALLED_APPS中注册storages应用
    INSTALLED_APPS = [
        # 保留原有其他应用配置
        'storages',
    ]
    
  3. 添加FTP存储专属配置(仅本地开发环境添加)
    # 将默认文件存储切换为FTP存储
    DEFAULT_FILE_STORAGE = 'storages.backends.ftp.FTPStorage'
    # 替换为你自己的FTP账号、服务器地址、media目录绝对路径
    FTP_STORAGE_LOCATION = 'ftp://ftp_username:ftp_password@server_ip:21/var/www/example.com/media'
    # 大部分云服务器的FTP服务默认使用被动模式,加上这个配置避免连接超时
    FTP_STORAGE_PASSIVE_MODE = True
    # 文件访问URL依然指向生产域名,保证生成的链接可直接访问
    MEDIA_URL = "https://example.com/media/"
    # 静态文件不建议走FTP,直接指向生产地址即可
    STATIC_URL = "https://example.com/static/"
    

配置踩坑提示

  • 配置前先确认服务器安全组、防火墙开放21端口(以及被动模式对应的FTP端口段)给你本地的公网IP,避免连接被拦截
  • 给FTP账号分配对应media目录的读写权限,否则会出现上传失败、文件读取403的问题
  • FTP_STORAGE_LOCATION里的目录路径要写服务器上media目录的绝对路径,不要写相对路径,否则会出现文件路径错位
  • 该配置仅在本地开发环境使用,生产环境保持默认的本地文件存储即可,不需要切换FTP存储

可选折中方案(无代码侵入)

如果不想修改Django存储配置,可以用sshfs工具,通过SSH协议把服务器上的media目录直接挂载到本地的MEDIA_ROOT路径,对Django来说操作的文件和本地文件没有区别,不需要改任何settings配置,也不需要额外开放FTP端口,只要你能SSH连接服务器就行。

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:33:22