我有django应用程序,我在本地开发并部署到pythonanywhere。
Local Setting.py包含sqlite-db,本地静态路径等.pythonanywhere上的Setting.py包含mysql-db,cdn链接包含静态等。
我想在我的git中有一个设置文件,有一些像这样的检查
if host_type=='pythonanywhere':
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql",
settings.py的最佳做法是什么?
哪个os.environ是由pythonanywhere提供的?
答案 0 :(得分:3)
PythonAnywhere没有为您提供设置环境变量的UI,尽管您可以编辑 /home/yourusername/.bashrc 文件并使用
在其中设置一个export MY_ENV_VAR="something"
根据您的问题,我猜您要避免在版本控制中存储数据库设置。因此,作为环境变量的替代方法,我使用的一种技术是在版本控制之外创建一个包含自定义设置的文件:
echo "production_settings.py" >> .gitignore
在settings.py中:
#... default dev settings
DATABASES = { "default": {"ENGINE": "django.db.backends.sqlite3"
#...
try:
from production_settings import DATABASES
except ImportError:
pass
因此,在PythonAnywhere上,您可以将生产设置保存在名为production_settings.py的文件中,并且在您的开发机器上,您什么都不做。
您也可以使用此方法在服务器上设置自定义SECRET_KEY
,这将是一个很好的安全措施......
答案 1 :(得分:1)
我一直在我的pythonanywhere帐户上使用.npmignore
(来自pip)和〜/ .env文件(git除外)。
然后在我的settings.py中:
Future<void> signOut() async {
await _firebaseAuth.signOut().catchError((error){
print(error.toString());
});
await _googleSignIn.signOut();
}
这意味着pythonanywhere唯一的唯一文件是.env文件,并且该方法在本地有效,并且(无法从git中排除settings.py文件)(在不使用dotenv的情况下直接读取env vars)。