【问题标题】:Django: Why do I need these in my setttings.py and urls.pyDjango:为什么我的 setttings.py 和 urls.py 中需要这些
【发布时间】:2020-11-30 16:05:51
【问题描述】:

我正在看一个关于制作视频订阅网站的在线教程,不知何故这些代码应该出现在我的 settings.py 中:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static_root'),
]
VENV_PATH = os.path.dirname(BASE_DIR)
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(VENV_PATH, 'media_root')

在我的 urls.py 中,这些代码也出现了......

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

我是 django 和 python 的初学者,谁能解释一下为什么我需要这些代码?

【问题讨论】:

  • 告诉 Django 在哪里可以找到您的静态(css、js)文件和用户上传的文件(媒体)

标签: python django


【解决方案1】:

static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 可能没有必要 - 查看this answer

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 是在开发中显示媒体文件所必需的。您不应该在生产中使用它,因为它要求 settings.DEBUG 为真。在生产环境中,您应该将 Web 服务器配置为直接提供静态和媒体文件。例如在 Nginx 中,您可以在配置文件中定义 location /staticlocation /media

查看documentation了解更多详情。

【讨论】:

    【解决方案2】:

    Django 的静态文件是所有指定网站“外观”的文件(css 和 js 文件,以及图像)。从 Django 的官方网站查看tutorial 的这一部分。 MEDIA_URL 部分用于存储和提供用户上传的图像;不过要小心,这仅在开发期间有效(DEBUG = True),不适合生产使用。请参阅 this site 了解如何在部署期间提供静态文件。

    因此,您在该代码中指定的是 Django 在加载所有图像、js 和 css 文件时应该查找的位置,假设您正在开发中。

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2016-11-17
      • 2022-01-18
      • 2016-06-02
      • 2015-04-16
      • 1970-01-01
      相关资源
      最近更新 更多