猿问

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

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


MEDIA_URL="/media/"

MEDIA_ROOT=os.path.join(BASE_DIR,"media")

这是我的项目网址


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>

并且没有显示图像。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'


德玛西亚99
浏览 186回答 4
4回答

隔江千里

你需要使用{% get_media_prefix %}标签。您必须在设置中设置 和 并将其添加MEDIA_ROOT到您的 urls.py 中,如本文档中所示。并像这样更改您的模板代码:MEDIA_URLMEDIA_URL{% load static %}....<div class="category-img"><img src="{% get_media_prefix %}logo.png"&nbsp; alt=""></div>此标签正确加载 Django 设置中媒体文件路径设置的 URL。如果您想在服务器中部署项目或使用挂载外部服务器来加载媒体,只需更改 django 项目中的媒体设置。在网站中保存要用作静态的图像的最佳做法,将此类文件保存在静态文件夹中,并使用 django 项目中的媒体文件夹将所有上传的文件保存在 Web 应用程序中。{{object.field.url}}并通过将 Django 模型对象传递给模板来加载它们,并使用Django 模板中的标签加载 URL 。

杨魅力

媒体文件是通过数据库添加的文件。对于不改变的文件使用静态。我也不明白如果有PDF文件会有什么问题。为什么不能把它放在静态中?但无论如何,你的设置没有问题。问题出在bookinfo中的一个函数中views.py。它说存在 a KeyError,这意味着您正在访问字典中不存在的内容。我的猜测是zonar设置为"media"或books[zonar].index(book_name)结果为"media"。更正该错误后,媒体文件就应该可以正常使用了。

拉莫斯之舞

在模板中,要设置图像外观的位置使用代码<img&nbsp;src="{%&nbsp;get_media_prefix&nbsp;%}{{uploaded_file}}"&nbsp;alt="File&nbsp;2">uploaded_file图像文件的名称在哪里。这是假设您的文件上传到根媒体文件夹中。

富国沪深

尝试使用静态:STATIC_URL="/static/"STATIC_ROOT=os.path.join(BASE_DIR,"static/")并将图像文件存储在 static 文件夹中,它应该位于 django 应用程序文件夹内。--static/&nbsp; --img/&nbsp; &nbsp; --logo.png&nbsp; &nbsp; {% load static %}&nbsp; &nbsp; <div class="category-img">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <img src="{% static 'img/logo.png' %}"&nbsp; alt="">&nbsp; &nbsp; </div>
随时随地看视频慕课网APP

相关分类

Python
我要回答