为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

德玛西亚99 2023-10-26 16:52:42
我正在尝试将一组文件手动存储在媒体文件夹中,并通过模板中的路径访问它们。这是我的媒体设置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'
查看完整描述

4 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

你需要使用{% 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>

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


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


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


查看完整回答
反对 回复 2023-10-26
?
杨魅力

TA贡献1811条经验 获得超6个赞

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

但无论如何,你的设置没有问题。问题出在bookinfo中的一个函数中views.py。它说存在 a KeyError,这意味着您正在访问字典中不存在的内容。我的猜测是zonar设置为"media"books[zonar].index(book_name)结果为"media"。更正该错误后,媒体文件就应该可以正常使用了。


查看完整回答
反对 回复 2023-10-26
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

在模板中,要设置图像外观的位置使用代码

<img src="{% get_media_prefix %}{{uploaded_file}}" alt="File 2">

uploaded_file图像文件的名称在哪里。这是假设您的文件上传到根媒体文件夹中。


查看完整回答
反对 回复 2023-10-26
?
富国沪深

TA贡献1790条经验 获得超9个赞

尝试使用静态:


STATIC_URL="/static/"

STATIC_ROOT=os.path.join(BASE_DIR,"static/")

并将图像文件存储在 static 文件夹中,它应该位于 django 应用程序文件夹内。


--static/

  --img/

    --logo.png

    {% load static %}

    <div class="category-img">

                    <img src="{% static 'img/logo.png' %}"  alt="">

    </div>


查看完整回答
反对 回复 2023-10-26
  • 4 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信