无法弄清楚在 django 开发环境中提供静态图像

2023-12-26

我读了文章 http://docs.djangoproject.com/en/dev/howto/static-files/(以及该主题上的其他人),但仍然无法弄清楚如何显示图像,除非将指向 Web 服务上现有文件的链接硬编码到 html 模板中。

我已经进去了urls.py:

...        
(r'^galleries/(landscapes)/(?P<path>.jpg)$', 
    'django.views.static.serve', {'document_root': settings.MEDIA_URL}),

...

其中“风景”是我试图显示其中的图像的相册之一。 (还有几个。)

In views.py它使用如下代码调用模板:

...
<li><img src=160.jpg alt='' title='' /></li>
...

它将 html 中的图像链接解析为:

http://127.0.0.1:8000/galleries/landscapes/160.jpg

In 设置.py I have:

MEDIA_ROOT = 'C:/siteURL/galleries/'
MEDIA_URL = 'http://some-good-URL/galleries/'

在文件系统中有一个文件 C:/siteURL/galleries/landscapes/160.jpg ,我在以下位置有相同的文件http://some-good-URL/galleries/landscapes/160.jpg http://some-good-URL/galleries/landscapes/160.jpg

无论我在 urls.py 中使用什么——MEDIA_ROOT 或 MEDIA_URL(期望提供本地图像或来自网络服务器的图像)——我都会在浏览器中的源代码中得到以下内容:

<li><img src=160.jpg /></li>

浏览器中没有显示图像。

我究竟做错了什么?


这是一篇很长的文章,基本上总结了我为了使静态文件正常工作而学到的有关 Django 的所有知识(我花了一段时间才理解所有不同部分如何组合在一起)。

要在开发服务器(以及后来的真实服务器)中提供静态图像,您必须做一些事情(特别注意第三步和第四步):

设置 MEDIA_ROOT

MEDIA_ROOT 是一个常量,它告诉 Djangophysical文件的路径(在您的文件系统上)。使用您的示例,MEDIA_ROOT 需要设置为“C:/siteURL/galleries/”,就像您所写的那样。 MEDIA_ROOT 将在以下步骤之一中使用,这就是我们设置它的原因。

设置 MEDIA_URL

MEDIA_URL 是您的图像所在的“url”。换句话说,每当你想要获取图像时,要查找的 url以。。开始媒体_URL。通常这是not将以“http”开头,因为您是从自己的服务器提供服务(我的 MEDIA_URL 通常设置为“/site_media/”,意味着从根域开始,然后转到 site_media 等)

使用MEDIA_URL

MEDIA_URL 并不是凭空起作用的,你实际上必须使用它。例如,当您编写获取文件的 HTML 时,它需要如下所示:

<li><img src="{{MEDIA_URL}}/160.jpg" /></li>

看看我如何告诉模板使用 MEDIA_URL 前缀?最终转化为'http://some-good-URL/galleries/160.jpg'.

请注意,为了能够在模板中实际使用 MEDIA_URL,您必须添加以下行'django.core.context_processors.media'给你的TEMPLATE_CONTEXT_PROCESSORS如果我没记错的话,在你的settings.py 文件中进行设置。

让您的开发服务器提供静态文件

在真实环境中,您将配置具有“static_media”等地址的文件,以便在不通过 Django 的情况下提供服务。但在开发环境中,您还希望从 Django 为它们提供服务器,因此您应该将此通用行添加到 urls.py 文件的末尾:

if settings.DEBUG:
# Serve static files in debug.
urlpatterns += patterns('',
    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.MEDIA_ROOT,
    'show_indexes' : True}),
)

请注意,它如何获取 URL“site_media/*”(实际上是我的 MEDIA_URL)的任何内容,并从我的 MEDIA_ROOT 文件夹(这是 MEDIA_ROOT 设置发挥作用的地方)提供它。

最后说明

让我困惑的是,这里很多东西都是为了方便。例如,MEDIA_ROOT 仅在调试 url 模式中使用,以告诉 Django 从何处加载。 MEDIA_URL 只是鼓励您不要在所有 HTML 文件中放入绝对 URL,因为这样当您决定将文件移动到不同的服务器时,您必须手动更改它们(而不是仅更改 MEDIA_URL)持续的)。

当然,这些都不是必要的:您可以使用自己的文件夹对调试 url 模式进行硬编码,确保静态文件确实是从 url 获取的服务器(通过在浏览器中访问它),然后手动编码那without在 HTML 文件中使用 MEDIA_URL 设置,只是为了确保一切正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法弄清楚在 django 开发环境中提供静态图像 的相关文章

  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • 如何使用Python将WebP图像转换为Gif?

    我已经尝试过这个 from PIL import Image im Image open this webp im save that gif gif save all True 这给了我这个错误 类型错误 不支持的操作数类型 tuple
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 如何使用Python的super()来更新父值?

    我对继承很陌生 之前所有关于继承和 Python 的 super 函数的讨论都有点超出我的理解 我当前使用以下代码来更新父对象的值 usr bin env python test py class Master object mydata
  • Python 中的 @staticmethod 与 @classmethod

    方法和方法有什么区别装饰的 https peps python org pep 0318 with staticmethod http docs python org library functions html staticmethod和
  • Django NoReverseMatch

    我有以下设置 landing pages views py urls py In urls py当我尝试访问时 我有以下内容 competition from django conf urls defaults import from dj
  • select() 可以在 Windows 下使用 Python 中的文件吗?

    我正在尝试在 Windows 下运行以下 python 服务器 An echo server that uses select to handle multiple clients at a time Entering any line o
  • Pandas Dataframe:将包含列表的行扩展到多行,并为所有列提供所需的索引

    我在 pandas 数据框中有时间序列数据 索引为测量开始时的时间 列中包含以固定采样率记录的值列表 连续索引 列表中元素数量的差异 这是它的样子 Time A B Z 0 1 2 3 4 1 2 3 4 2 5 6 7 8 5 6 7 8
  • 如何有效地从 loadmat 函数生成的嵌套 numpy 数组中提取值?

    python中是否有更有效的方法从嵌套的python列表中提取数据 例如A array array 12000000 dtype object 我一直在使用A 0 0 0 0 当你有很多像 A 这样的数据时 这似乎不是一个有效的方法 我也用
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 如何在与应用程序初始化文件不同的文件中迭代 api 路由

    我有一个 apiroutes py 文件 其中定义了许多路由 例如 api route api read methods GET api route api write methods POST 其中 api 是导入 from import
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如

随机推荐

  • Intellij IDEA。始终显示maven的`target`目录

    使用Intellij IDEA创建maven项目时 默认情况下target目录在项目资源管理器中不可见 但我可以通过将其从模块设置中的排除文件夹中删除来使其可见 但它的作用时间很短 10 15分钟后target目录再次不可见 所以我需要再次
  • tinymce 无法在 Firefox 上运行

    我有三个文本区域 使用tinymce 作为文本区域 它们都可以在 Chrome 上运行 但不能在 Firefox 上运行 我正在使用 php 代码从 mysql 加载文本 第一个文本区域加载正常并且可以工作 但其他两个文本区域会短暂闪烁内容
  • Web Share API 级别 2 DOMException:权限被拒绝

    我正在获取一个 img 将其转换为一个文件 然后尝试共享该文件 我在 Android 上最新的 Chrome 目前唯一支持此 API 的浏览器 上测试了代码 if shareimg navigator canShare share asyn
  • 为什么我收到“UserWarning:模块 dap 已从 None 导入...”

    I have python matplotlib and python mpltoolkits basemap从 Ubuntu 软件包安装 安装中python mpltoolkits basemap还安装python dap作为依赖 当我导
  • React.lazy 无法在生产模式下工作

    我有一个正在运行的 React 应用程序 我想使用 React lazy 添加基于路由的代码分割 目前我的代码是 import PureComponent cloneElement Suspense lazy from react expo
  • 使用文件系统作为离线播放的视频源

    我正在尝试向我的 HTML5 视频播放器添加离线功能 我正在尝试将文件作为 blob 写入 chrome 文件系统 然后从那里读取它们 我相信我遇到了一个问题 文件实际上并未被写入 只是文件名 由于我的以下代码目前已构成 因此它可以工作 但
  • 使用 VSPE 的 WPF 中的串行端口通信问题

    我开发了一个用于串口通信的wpf应用程序 我使用Windows 7的模拟器VSPE 我可以成功发送和接收数据 我未来的目的是将设备连接到我的 USB 驱动器 我将向我的 USB 发送一个字符串值 并且它会发送回一个字符串作为确认结果 我可以
  • 如何在 PHP 中将数组转换为不带 .= 的列表?

    我有以下数组输出 Array day gt 17 eventContent gt event 1 of 17th eventTitle gt 17th event 1 Array day gt 19 eventContent gt even
  • 如何获取触发ng-change的DOM元素?

    我正在使用 AngularJS 我有几个
  • AWS EC2 实例在开始使用 boto3 后立即停止

    使用 boto3 run instances 实例在 30 秒后自行停止 控制台中的状态转换原因显示 Client InstanceInitiatedShutdown Instance initiated shutdown 可能是什么问题
  • 合并两个不同类型的List

    我将数据从另一个列表添加到列表的对象中 public void MergeLsts List a lstA List b lstB foreach A dataA in lstA foreach B dataB in lstB if dat
  • 获取 Windows 中进程的峰值私有字节值

    ProcessExplorer 以某种方式获取此值并将其显示在每个进程的 性能 选项卡上 如何使用 Win32 API 获取它 解决方案 在 Peak Private Bytes 字段中 Process Explorer 实际上显示 Pro
  • Android 折线图/图形 API

    我需要向我的折线图 图表显示渐进的数字统计数据 请分享您的意见和建议 另请注意 我更喜欢有原生 API rohit AChartEngine 是一个适用于 Android 应用程序的图表库 目前支持以下图表类型 折线图 面积图 散点图 时间
  • WCF 中的“by ref”参数是好是坏?

    我最近看到一个 WCF 服务声明了操作合同by ref论据 我不知道为什么做出这个设计决定 操作无效 但此外 根据我的 WCF 知识 我无法判断这是否是一个好的实践 或者如果这不相关 你怎么认为 然而 根据这篇 Microsoft 文章 W
  • JVM退出后守护线程如何存活?

    我正在阅读有关 Java 的文档setDaemon 方法 当我读到 JVM 不等待守护线程完成就退出时 我感到很困惑 然而 由于守护线程本质上是 JavaThread 它大概依赖在 JVM 上运行来实现其功能 如果 JVM 在守护线程完成之
  • 如何在不引入偏差的情况下生成一个范围内的随机 Rust 整数?

    如何在 Rust 中生成随机骰子 我知道我可以使用rand random 但这需要我想生成一个整数类型的值 使用rand random
  • 向oracle中的现有表添加自动增量主键[重复]

    这个问题在这里已经有答案了 我想向具有数据的现有表添加新的自动增量主列 我怎么做 我首先添加了一列 然后尝试添加一个序列 之后我失去了如何插入该列并将其作为主键 假设你的桌子叫t1你的主键叫做id首先 创建序列 create sequenc
  • Authorization_IdentityNotFound 错误 MS Graph API

    我们的应用程序将执行简单的 User ReadBasic All 功能 据我了解 这些功能不需要管理员权限 使用此处记录的流程 https graph microsoft io en us docs authorization app on
  • 如何通过URL中的ID获取单个资源?

    我有一个网址 例如 http example com page page id http example com page page id 我想知道如何获得page id路由中 url 的一部分 我希望我可以设计一些方法 例如 route
  • 无法弄清楚在 django 开发环境中提供静态图像

    我读了文章 http docs djangoproject com en dev howto static files 以及该主题上的其他人 但仍然无法弄清楚如何显示图像 除非将指向 Web 服务上现有文件的链接硬编码到 html 模板中