无法访问 django 模板中的媒体文件

sri*_*ush 1 python django django-templates

我正在尝试将一组文件手动存储在媒体文件夹中,并通过模板中的路径访问它们。这是我的媒体设置

MEDIA_URL="/media/"
MEDIA_ROOT=os.path.join(BASE_DIR,"media")
Run Code Online (Sandbox Code Playgroud)

这是我的项目网址

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('books.urls')),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

这是我的模板代码

<div class="category-img">
                    <img src="/media/logo.png"  alt="">
                </div>
Run Code Online (Sandbox Code Playgroud)

并且没有显示图像。Media 文件夹中有 logo.png 文件。我收到以下错误。

Internal Server Error: /media/bordered.jpg/
Traceback (most recent call last):
  File "C:\Users\Sriram\anaconda3\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\Sriram\anaconda3\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Sriram\Desktop\books_site\books\views.py", line 42, in bookinfo
    book["description"]=descriptions[zonar][books[zonar].index(book_name)]
KeyError: 'media'
Run Code Online (Sandbox Code Playgroud)

Erf*_*fan 5

你需要使用{% get_media_prefix %}标签。

您必须在设置中设置 和 并将其添加MEDIA_ROOT到您的 urls.py 中,如本文档中所示。并像这样更改您的模板代码:MEDIA_URLMEDIA_URL

{% load static %}
....
<div class="category-img"><img src="{% get_media_prefix %}logo.png"  alt=""></div>
Run Code Online (Sandbox Code Playgroud)

此标签正确加载 Django 设置中媒体文件路径设置的 URL。如果您想在服务器中部署项目或使用挂载外部服务器来加载媒体,只需更改 django 项目中的媒体设置。

在网站中保存要用作静态的图像的最佳实践,将此类文件保存在静态文件夹中,并使用 django 项目中的媒体文件夹将所有上传的文件保存在 Web 应用程序中。

并通过将 Django 模型对象传递给模板来加载它们,并使用{{object.field.url}}Django 模板中的标签加载 URL。