将mt设置更改为DEBUG = False后出现的错误

3
我已经安装了grapelli管理主题,并在我的模板中使用了各种javascript文件。

一切都很顺利,在我完成所有各种测试之后,我决定尝试在我的设置文件中将DEBUG=False

之后,我立即遇到了grapelli的各种文件以及一些自己的文件的404问题。

为什么会发生这种情况?我开始怀疑我必须把所有与grapelli(使用pip安装,并位于Python27中)相关的内容添加到我的应用程序模板中。

对于使用各种外部模块的Django应用程序,如何准备生产环境的程序是什么流程?

编辑

由于这与我的静态文件有关,因此最可能是我应该包含静态文件设置。

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = "/static/"

    STATICFILES_FINDERS = (
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
    )

    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    #     'django.template.loaders.eggs.Loader',
    )

请检查您的urls.py文件。您是否启用了基于DEBUG设置的静态URL? - Rajesh Kaushik
2个回答

2

我认为你需要运行

python manage.py collectstatic

并设置静态文件的设置。 在运行Post collectstatic之后,您实际上可以在STATIC ROOT目录中看到grapelli文件夹。要了解更多详细信息,请阅读Django文档

请确保您没有添加

static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

DEBUG == True的情况下,将其添加到您的URL中。


我在urls.py中没有使用静态URL。但是我没有使用collectstatic命令。运行后,所有grapelli文件和其他文件都被移动到一个位于与我的manage.py同一级别的*/static*目录中。现在我有:* myServer * myApp * static然而,它仍然抱怨找不到文件,例如http://127.0.0.1:8000/static/grappelli/jquery/ui/jquery-ui.min.css另请注意,直到现在,我在myAPP中有一个名为static的文件,其中包含一些模板,并且它可以正常工作。 - ealiaj
好的,我花了一些时间才明白发生了什么。我只是不得不阅读有关该主题的所有文档。 - ealiaj

0

请查看settings.py文件中的ALLOWED_HOSTS选项。您只需要指定您的网站允许的主机,例如:

ALLOWED_HOSTS=['localhost']

或者选择最简单但最不安全的选项:

ALLOWED_HOSTS=['*']

允许的主机应引发 SuspiciousOperation 而不是 404。请查看 https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts - Rajesh Kaushik
很抱歉要问这个问题,但您确定您正在编写您的网站运行的域名吗? - Nhor
我已经正确地设置了这个设置,因为有人告诉我它可能会给我带来问题。所以恐怕在这种情况下,这不是原因。 - ealiaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接