在Django 1.8.2中使用local.py(settings)时出错

时间:2015-07-07 07:28:06

标签: python django python-3.4

我想按照“Django的两个Scoops”所解释的那样实现设置。我推荐了他们的书以及github sample code

我收到以下错误:

django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

当我将以下代码添加到设置文件夹中的__init__.py时,问题就解决了:

from .local import *

请详细解释发生的情况,因为互联网上的所有示例中__init__.py都没有代码。

我在Python 3.4上使用 Django 1.8.2

1 个答案:

答案 0 :(得分:1)

当您在文件夹中包含__init__.py时,该文件夹会被标记为名为settings的程序包,您可以从中导入local模块

等模块

这在Python中是一个相当标准的东西,即使不是每个Django程序员都使用settings作为包

来自Python文档:

  

需要__init__.py个文件才能让Python对待   目录包含包;这是为了防止   无意中具有通用名称的目录,例如string   隐藏稍后在模块搜索路径上发生的有效模块。在   最简单的情况,__init__.py可以只是一个空文件,但它可以   还执行包的初始化代码或设置__all__   变量,稍后描述。

来源:https://docs.python.org/3/tutorial/modules.html#packages

  

我的问题是我需要在 init .py中使用.local import *编写   包装工作?

检查您应加载manage.py的{​​{1}}文件,例如

settings.local

同时检查本地模块中#!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings.local") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) 的实际值,看它是否为空(如果你使用了一些变量插值)