有机化学、化学信息学、生物化学、生物信息学、机器学习、深度学习、药物设计、网站建设关注我!Bilibili
开发环境:
本机的开发代码,用的都是localhost设置
生产环境:
线上的服务,需要链接正式数据库,配置静态,以及关闭DEBUG
包文件夹:如果使用idea(比如pycharm),直接创建包就行
创建了以后,记得把原本的settings.py改为base.py,放进文件夹内。
(其实就是一个普通文件夹,里面放一个__init__.py文件和其他代码)
下面是__init__.py的写法,需要根据自己项目的名称,需要根据自己的项目名称修改内容,比如我现在的django项目叫做aiochemserver,就需要读取对应的设置文件
import os
# settings/__init__.py
# 根据外部传入的 DJANGO_SETTINGS_MODULE 来决定加载哪套配置
# 获取环境变量 DJANGO_SETTINGS_MODULE,默认为 'aiochemserver.settings.dev'
settings_module = os.getenv('DJANGO_SETTINGS_MODULE', 'aiochemserver.settings.dev')
# 提取最后一段,如 'dev'、'prod'、'test'
env = settings_module.rsplit('.', 1)[-1].lower()
if env in ('prod', 'production'):
from .prod import *
elif env in ('dev', 'development', 'settings'):
# 如果变量是 aiochemserver.settings 或者未指定 dev,默认使用 dev
from .dev import *
else:
# 其他命名也可以映射到 dev,或者直接抛错提示
raise ImportError(f"Unknown DJANGO_SETTINGS_MODULE suffix '{env}', cannot load settings")
# 可选:打印当前加载的配置环境,方便调试
print(f"[Django settings] loaded configuration: {env}")
这样可以在启动项目的时候,读取不同的配置
在该目录下,分别创建base.py 、dev.py、 prod.py
路径参考:
这三个文件,base用来放公共的配置,比如时区、apps的内容等
dev和prod的区别在于,数据库的ip和密码、JWT密钥等敏感信息,生产环境一般都是读取文件,拿到信息,而不会直接写在settings内,所以分开写信息
比如生产环境prod.py内可以写:
from .base import *
DEBUG = False
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
ALLOWED_HOSTS = [
"www.aiochem.com",
"aiochem.com",
]
BASE_HOST_INFO = [
"https://www.aiochem.com",
"https://aiochem.com",
]
CORS_ALLOWED_ORIGINS = BASE_HOST_INFO # 允许哪些跨域浏览器请求(Origin)访问 API
CHANNEL_ALLOWED_HOSTS = BASE_HOST_INFO # WebSocket Origin 验证 允许哪些 WebSocket Origin 建立连接
CSRF_TRUSTED_ORIGINS = BASE_HOST_INFO # 信任哪些来源可以携带凭证(Cookie)提交表单
with open("/etc/secret_key.txt") as f:\
SECRET_KEY = [f.read](http://f.read)().strip()
这些参数根据公司需求,进行设置,为了安全,不要允许全部的请求都通过
而在本地开发环境的dev.py内,可以直接写测试的密钥,允许所有请求
from .base import *
from datetime import timedelta
DEBUG = True
ALLOWED_HOSTS = ["*"]
CHANNEL_ALLOWED_HOSTS = ["*"]
CORS_ALLOW_ALL_ORIGINS = True
SECRET_KEY = 'sdkfjhsdkjf5n2u&v4qhphkmb*fdlkasjd65456df3'
在启动项目的时候,如果是生产环境,需要额外指定参数:
我这里使用daphne代理的服务,如果是普通的manage.py启动,也是一样的
DJANGO_SETTINGS_MODULE=aiochemserver.settings.prod daphne -b 0.0.0.0 -p 8001 aiochemserver.asgi:application
显式指定DJANGO_SETTINGS_MODULE为prod
没有推荐的文章...
没有对应的文章...