【问题标题】:Local Settings in Django 2Django 2 中的本地设置
【发布时间】:2019-04-10 23:12:52
【问题描述】:

我将 Django 2 与 Python 3.7 一起使用

我想从文件 local_settings.py 导入一些设置,以便我可以将该文件包含在 .gitignore 中,这样我就不会在 github 上共享我的密钥。

我的文件夹树设置如下:

settings.py 结尾有这个:

try:
       from local_settings import *
    except ImportError:
        pass

    ORDERS = '@catsinuniform.myshopify.com/admin/orders.json'

    PRODUCTS = '@catsinuniform.myshopify.com/admin/products.json'

    SHOPIFY_SECRET_KEY = ''

    SHOPIFY_PWORD = ''

    ORDERS_URL = f"https://{SHOPIFY_SECRET_KEY}:{SHOPIFY_PWORD}{ORDERS}"

    PRODUCTS_URL = f"https://{SHOPIFY_SECRET_KEY}:{SHOPIFY_PWORD}{PRODUCTS}"

我也想把我的 SECRET_KEY 放在 local_settings.py 中

这不起作用,我找不到为什么不呢?是我的 Python 版本还是 Django?

【问题讨论】:

  • “不工作”是什么意思?你到底尝试了什么,会发生什么? (注意 local_settings 模式的重点是导入在文件的最后,否则您将无法覆盖任何后续设置。但这不会影响您的 SECRET_KEY。)

标签: django django-settings


【解决方案1】:

因为您的local_settings.py 首先被导入,然后被您的设置覆盖。如果您想使用此模式,请在文件末尾进行导入。

更好的方法是将您的密钥存储在服务器上设置的环境变量中,然后使用以下内容将其导入您的设置文件:

SECRET_KEY = os.environ.get('SECRET_KEY', 'some_sort_of_sane_default_for_your_dev')

【讨论】:

  • ORDERS_URL 和 PRODUCTS_URL 仍为空白,因此当我将 URL 导入视图时出现关键错误?
【解决方案2】:

另一种方法是从您的 __init__.py 文件中导入它

from .settings import *
try:
    from .local_settings import *
except ImportError as exc:
    exc.args = tuple(
        ['%s (local_settings.py missing)' % exc.args[0]])
raise exc

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2012-07-05
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多