如何在Django的html页面上获取图像?

2024-05-20 03:14:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚到Django。我用Django创建了一个web页面,现在我遇到了在模板上静态加载文件的问题。我不明白问题出在哪里,因为如果我只把它放在一个文件夹中,它就可以工作,但是如果我更改了那个文件夹的目录,它会给我一个404 not found错误。它看起来像这样:

<img src="/media/{{cat.image_name}}" alt="#" height="350">

这里“media”是我的图像文件所在的文件夹,"{{cat.image_name}}"是通过数据库传递的图像的名称。你知道吗

但是,如果我写

<img src="/admin/public/media/{{cat.image_name}}" alt="#" height="350">

WAREadmin>public>media是我放置图像的地方。你知道吗

我得到这个错误:

Not Found: /admin/public/media/freelancer.jpg [09/Dec/2019 18:23:30] "GET /admin/public/media/freelancer.jpg HTTP/1.1" 404 1852

有人能帮我吗?你知道吗


Tags: djangoname图像imagesrc文件夹imgadmin
2条回答

Django称这些文件为“staticfiles”,它们的路径通常包含“static”。这些是您在源代码存储库中维护的文件,用户或管理员不会以任何方式上载这些文件:通常是JS/CSS/HTML布局的所有JS、CSS和图像资产。你知道吗

如何配置静态文件在https://docs.djangoproject.com/en/2.2/howto/static-files/上有很好的说明。你知道吗

由用户/管理员上传的任何文件(动态内容)都被放置在一个通常称为“media”的路径下,如https://docs.djangoproject.com/en/2.2/topics/files/https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-MEDIA_ROOT中所述。你知道吗

就你而言:

如果/admin/public/media/是一个本地文件路径,那么在您的web服务器中,默认情况下它是不可见的(这很好)。文件路径!=URL-这就是为什么会有STATIC\u ROOT(文件路径)和STATIC\u URL(URL),MEDIA\u ROOT和MEDIA\u URL也是如此。Django会注意,默认情况下,您在文件路径STATIC\u ROOT下提供的内容在STATIC\u URL下是可见的。如果不想使用此机制,则必须自己实现:

  1. 将文件从文件路径/admin/public/media复制到web服务器上可由web服务器访问的目录
  2. 在Django或您的代理(Nginx或apachehttp)中实现URL路由

对于更大的应用程序,设置Nginx或Apache web服务器来服务于Django在运行./manage.py collectstatic时放置静态文件的目录是明智的。这些代理服务静态文件的速度要比Django快得多,而Django服务器有更多的资源来服务动态(DB)内容。你知道吗

Django静态文件使用设置,如果不向静态文件目录添加任何路径,它将不工作

相关问题 更多 >