Django `SECRET_KEY` 设置
Posted
技术标签:
【中文标题】Django `SECRET_KEY` 设置【英文标题】:Django `SECRET_KEY` settings 【发布时间】:2017-04-12 21:37:12 【问题描述】:我对 django 中的 SECRET_KEY
设置有一些“简单”的问题:
它的最小、最大和推荐长度是多少?
我可以留空吗? 如果我使用很长的SECRET_KEY
,会不会“浪费”一些?
上面允许的字符是什么?
是否允许不可打印的字符(包括但不限于空格)?我应该什么时候改变它?
我知道当我更改它时,所有现有的cookies
/sessions
、signature
等都会失效。
是否可以从数据库(或其他来源)中检索而不是直接写在settings.py中?
【问题讨论】:
【参考方案1】:Django 每次启动项目时都会生成一个SECRET_KEY
,所以,不,you can't leave it blank。
SECRET_KEY
的长度始终为 50 个字符。
没有空格。这是 Django 用来生成它的方法。
def get_random_secret_key():
"""
Return a 50 character random string usable as a SECRET_KEY setting value.
"""
chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
return get_random_string(50, chars)
是的,您可以将其存储在其他地方,例如使用env
设置方法,例如。 g.
当然,您可以随时查看documentation 关于SECRET_KEY
或代码sn-ps 之类的:
SECRET_KEY
generator
startproject
code
除此之外,还有 creating a ticket to improve SECRET_KEY
文档的替代方案 - 如果您认为是这样的话。
【讨论】:
我知道django
在项目创建过程中会自动生成 SECRET_KEY 但当然,我可以手动编辑它。
我找不到任何对 SECRET_KEY 始终为 50 个字符的引用。文档说它是一个字符串,没有额外内容,所以我认为它可以是任意长度。
@texnic 你检查到 Django 源代码的链接了吗?这是github.com/django/django/blob/master/django/core/management/…以上是关于Django `SECRET_KEY` 设置的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured:设置 SECRET_KEY 环境变量
SECRET_KEY 设置不能为空 - django+pycharm
将环境变量中的 Django SECRET_KEY 传递给 Dockerized gunicorn