3

我的主执行文件中有这个:

databaseUrl = appPath + '/db/timey.db' 

它指向我的 SQLite DB。

我已经为访问我的模型(数据/数据库)做了一些封装。所以在 databaseURL 最终被使用之前,我需要从main -> view.py -> model.py -> db.py传递它。这将是愚蠢的,因为例如我的视图类不需要知道我的数据库或其路径。那么,什么是真正使这条路径“全局”可访问而不总是传递它的正确方法呢?

我试图让 databaseUrl 全球化,但我不喜欢这个想法,也没有真正让它像那样工作。

将信息存储在外部文件中将是一种矫枉过正,因为无论如何它是唯一(常量!)全局使用的变量。

谢谢!

4

1 回答 1

6

我认为将其存储在外部文件中一点也不为过。我认为有一个设置或配置文件很有帮助

# settings.py

import os
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
DATABASE_URL = ''
DATABASE_USER = ''
DATABSE_PASSWORD = ''

等等

from myproject import settings 
settings.DATABASE_URL

这是 django 和 scrapy 存储项目数据库配置设置和所有其他项目设置的方法

另外,如果您有一个数据库类,将这些设置存储在其中可能有意义吗?我不知道。

settings.py 文件可让您轻松设置开发/本地数据库 url。为此,您可以拥有一个local_settings.py永远不会受到版本控制或打包在项目中的文件

在您的 settings.py 文件中

try:
  from local_settings import *
except ImportError:
  pass

然后在 local_settings.py 你可以覆盖 DATABASE_URL 作为你的开发数据库!这是一个 django 项目约定

于 2013-01-24T18:10:27.077 回答