【问题标题】:static image/media files in djangodjango 中的静态图像/媒体文件
【发布时间】:2019-12-16 08:59:21
【问题描述】:

我无法在模板中使用 django 加载静态文件,我的文件如下所示

设置.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Theme'

]

STATIC_DIR = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIR = [
STATIC_DIR,
]

模板/index.html

<!DOCTYPE html>
{% load static %}

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>First App</title>
</head>
<body>
<h1>Hello this is index.html!</h1>
<img src="{% static 'images/mark.jpg' %}" alt="My image">
</body>
</html>

项目目录

This is the projec t directory`

【问题讨论】:

  • 您是否将静态网址添加到urls.py
  • 不,我没有这样做,因为我有两个 urls.py 一个用于主项目,另一个用于我必须添加此 url 的应用程序

标签: django


【解决方案1】:

将这些代码也添加到您的主 url 文件中

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在设置中也添加这一行

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

【讨论】:

    【解决方案2】:

    STATICFILES_DIR 列表应命名为 STATICFILES_DIRS

    In development 运行时使用runserverDEBUG=True 就足够了。


    提供静态文件in production:

    • 建议使用外部网络服务器(在生产中,您很可能在 django 前面有一个或网络代理)。致电collectstatic 并使用 web-server 提供生成的 static_root 目录

    • 或者您可以将它们上传到 CDN(AWS S3、CLoudflare)

    • 或者可以让django使用Whitenoise为他们服务

    • 最不推荐但仍然可行 - 通过添加静态 URL 与 django 一起进行开发

    【讨论】:

    • 谢谢你,我刚刚用 STATICFILES_DIRS 替换了 STATICFILES_DIR
    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 2012-07-14
    • 2018-07-07
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多