1

在部署 Django 应用程序时。我遇到了静态文件的问题。我在静态目录中有 JS 和 CSS 文件。但是浏览器无法找到这些文件。我在与服务器操作系统相同的 ubuntu 本地机器上有相同的文件和设置,并且在本地工作。尽管它具有相同的设置,但我将在下面粘贴该静态目​​录和文件设置。

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(ROOT_PATH,'static')

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'


# Additional locations of static files
STATICFILES_DIRS =(
                os.path.join(ROOT_PATH,'static'),
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

上面代码中的根路径在此之前定义为:

import os
#from django.contrib.sites.models import Site
ROOT_PATH = os.path.dirname(__file__)

我正在将 mod_wsgi 与 apache2 一起使用,据我了解,它应该在加载 /somefoldername 时找到文件,然后浏览器应该进入该目录但没有找到问题所在。要了解环境和 wsgi 设置等,我在这里关注的是我发布了我的 wsgi 文件详细信息及其工作方式的问题:转移到服务器后 Django 站点上出现 500 服务器错误

我在查找应用程序和其他模板和模块等时经常遇到问题。即使在服务器上的 syncdb 命令中,对于模板我附加了根路径并且它开始工作还在 wsgi 文件中添加了项目路径,但仍然没有解决静态文件问题。

4

3 回答 3

2

当您运行“collectstatic”时,是否所有文件都复制到了 STATIC_ROOT? 您应该首先验证这一点,以便您知道文件应该在哪里。

您是否已将 apache 配置为将 STATIC_ROOT 中的静态文件作为“/static/”提供服务?Django 不会在生产环境中为您提供静态文件(DEBUG=False),因此您需要配置 Web 服务器软件来为您提供文件。

另外,我认为您不希望您的 STATICFILES_DIRS 包含与 STATIC_ROOT 相同的路径。文件STATICFILES_DIRS中的目录复制STATIC_ROOT。您的 STATICFILES_DIRS 应该包含在“collectstatic”期间不会以其他方式搜索的目录。

于 2013-01-01T01:44:14.730 回答
0

Django 文档涵盖了该主题。看:

于 2013-01-02T21:19:11.557 回答
0

警告

这仅在 DEBUG 为 True 时有效。

那是因为这种观点非常低效并且可能不安全。这仅用于本地开发,绝不能在生产中使用。

如果您仍然需要在本地提供静态服务器(例如,无需调试的测试),您可以在不安全模式下运行开发服务器:

python manage.py runserver --insecure

享受欢呼:)

于 2020-02-17T21:03:53.613 回答