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

Python 无法访问django模板中的媒体文件,python,django,django-templates,Python,Django,Django Templates,我正在尝试在媒体文件夹中手动存储一组文件,并通过模板中的路径访问它们。这是我的媒体设置 MEDIA_URL="/media/" MEDIA_ROOT=os.path.join(BASE_DIR,"media") 这是我的项目URL urlpatterns = [ path('admin/', admin.site.urls), path('',include('books.urls')), ]+static(settings.MEDIA_

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

MEDIA_URL="/media/"
MEDIA_ROOT=os.path.join(BASE_DIR,"media")
这是我的项目URL

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('books.urls')),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
这是我的模板代码

<div class="category-img">
                    <img src="/media/logo.png"  alt="">
                </div>
尝试使用静态:

STATIC_URL="/static/"
STATIC_ROOT=os.path.join(BASE_DIR,"static/")
并将图像文件存储在静态文件夹中,它应该位于django应用程序文件夹中

--static/
  --img/
    --logo.png
{%load static%}
尝试使用静态:

STATIC_URL="/static/"
STATIC_ROOT=os.path.join(BASE_DIR,"static/")
并将图像文件存储在静态文件夹中,它应该位于django应用程序文件夹中

--static/
  --img/
    --logo.png
{%load static%}

媒体文件用于通过数据库添加的文件。用于不更改的文件。我也不明白如果有PDF文件会有什么问题。你为什么不能把它放在静电中


但无论如何,您的设置没有问题。问题在于
views.py
中的函数
bookinfo
。这意味着有一个
键错误
,这意味着你正在访问字典中不存在的东西。我猜
zonar
设置为
“媒体”
书籍[zonar]。索引(书籍名称)
结果到
“媒体”
。更正该错误,媒体文件应得到正确的服务。

媒体文件适用于通过数据库添加的文件。用于不更改的文件。我也不明白如果有PDF文件会有什么问题。你为什么不能把它放在静电中


但无论如何,您的设置没有问题。问题在于
views.py
中的函数
bookinfo
。这意味着有一个
键错误
,这意味着你正在访问字典中不存在的东西。我猜
zonar
设置为
“媒体”
书籍[zonar]。索引(书籍名称)
结果到
“媒体”
。更正该错误,媒体文件应得到正确服务。

您需要使用
{%get\u media\u prefix%}
标记

您必须在设置中设置
MEDIA\u ROOT
MEDIA\u URL
,然后将
MEDIA\u URL
添加到URL.py中。并按如下方式更改模板代码:

{% load static %}
....
<div class="category-img"><img src="{% get_media_prefix %}logo.png"  alt=""></div>
{%load static%}
....
此标记将URL正确加载到Django设置中的媒体文件路径设置。如果要在服务器中部署项目或使用mount external server加载媒体,只需更改django项目中的媒体设置

将要在网站中用作静态文件的图像保存为静态文件的最佳做法是,将此类文件保存在静态文件夹中,并使用django project中的media文件夹将所有上载的文件保存在web应用程序中


将Django模型对象传递给模板,并在Django模板中使用
{{object.field.URL}}
标记加载URL。

您需要使用
{%get_media_prefix%}
标记

您必须在设置中设置
MEDIA\u ROOT
MEDIA\u URL
,然后将
MEDIA\u URL
添加到URL.py中。并按如下方式更改模板代码:

{% load static %}
....
<div class="category-img"><img src="{% get_media_prefix %}logo.png"  alt=""></div>
{%load static%}
....
此标记将URL正确加载到Django设置中的媒体文件路径设置。如果要在服务器中部署项目或使用mount external server加载媒体,只需更改django项目中的媒体设置

将要在网站中用作静态文件的图像保存为静态文件的最佳做法是,将此类文件保存在静态文件夹中,并使用django project中的media文件夹将所有上载的文件保存在web应用程序中


用Django模板中的
{{{object.field.URL}}
标记加载URL,然后将Django模型对象传递到模板中。

静态对我有效,但我有pdf文件要存储,所以我更喜欢媒体URL。请帮助我,我的代码有什么问题。我认为静态现在不起作用。控制器有问题,而不是设置有问题。我的应用程序URL之一是路径(“/”,views.bookinfo,name=“bookinfo”)是否影响了我的媒体根访问权限是的,我认为这就是发生的情况。请求的任何路径都调用
bookinfo
函数。不要在根目录下使用参数。使用类似于
path(“bookinfo/”,views.bookinfo,name=“bookinfo”)
static的方法对我有效,但我有pdf文件要存储,所以我也更喜欢媒体url。请帮助我代码中有什么错误。我认为静态现在不起作用。控制器有问题,而不是设置有问题。我的应用程序URL之一是路径(“/”,views.bookinfo,name=“bookinfo”)是否影响了我的媒体根访问权限是的,我认为这就是发生的情况。请求的任何路径都调用
bookinfo
函数。不要在根目录下使用参数。使用类似于
path(“bookinfo/”,views.bookinfo,name=“bookinfo”)