我可以使Django数据库path(对于sqlite3)“跨平台”?

我正在学习Django和Python(以及一般的编程)。 为了简单起见,我正在使用sqlite3作为我的数据库,而我正在通过教程Django等。

我是一个多平台的用户(Mac OS,Windows,Linux),这取决于我当时在哪里。 所以,我所做的是把我的编程项目放在我的Dropbox中,这样我就可以在任何地方使用相同的代码。

问题是,在特定项目的settings.py文件中,我指定了如下所示的数据库path:

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'C:/Users/David/Dropbox/programming/mysite/database', # Or path to database file if using sqlite3. 

…但是当我使用MacOS或Linux,显然是C:/扼stream圈。 我想知道是否有人提出了一个简单的补救措施。 当然,我可以做的一种方法是通过MySQL或者其他方式在我的web服务器上远程设置我的数据库,但是我认为可能有一个简单的方法来执行,比如使用“if”语句。

在settings.py中使用相对路径是很多人认为是最好的做法。 像这样的东西可能会有所帮助。

 from os.path import dirname, join PROJECT_DIR = dirname(__file__) DATABASES = { # ... 'NAME': join(PROJECT_DIR, 'your_db_name.db'), # ... } 

在适当的情况下,我使用上述两种方法。 相对路径在我的所有项目中,但有些需要平台检测。

第三种方法是将版本控制之外的local_settings文件导入到主设置文件中。 from local_settings import * – 这个本地设置文件对于每个环境可以是不同的。 如果你想看看,你可以放入适合你的环境检测,并导入适当的窗口,osx或linux文件。

这个方法是干净的,如果你有三个环境,可能会更好,因为它不会在所有环境设置中混乱你的settings.py。

Django本地设置

我个人有更详细的设置文件的每个环境,如数据库选择文件(有时,我想要一个空白的sqlite数据库容易重置),使S3,调试工具栏,本地开发(模板调试,缩略图调试等),缓存开/关,这样我就可以混合和匹配我需要的任何生产,分期,各级分级调试和本地开发。

不是一个好的解决方案,但是你可以测试你正在运行的平台,比如:

 import platform 'NAME': 'C:/Users/David/Dropbox/programming/mysite/database' if platform.system() == 'Windows' else '<Linux path to sqlite>'