Django settings之完美设计

起因

写道
settings文件是网站最为关键的配置文件,但这个文件对于不同时期的版本里面的内容是不一样的.经常会造成该文件被莫名替换,被修改
导致一些不可知的问题发生.

需求

写道
设计好的settings模式,来方便于在各种环境中进行测试;
设计好的settings,就是如何建立完善的Django设置模块。

资源

http://rdegges.com/the-perfect-django-settings-file

测试

写道
让我们删掉settings.py文件,来创建一个settings的模块吧..

the one

mv settings.py settings.py.me
django-admin.py startapp settings

the second

写道
1.定义一个common.py文件,用来放置所有配置共享的信息,即公共信息;
2.定义各个环境下用到的配置文件,并确保在文件的开头import common.py的信息;
如:dev.py,work.py等.
3.运行 python manage.py runserver --settings=settings.dev

看看我的更改

1.创建了一个settings的app,包含__init__.py文件,这个settings的app就不需要加入到settings.py的apps里了;
2.创建了一个common.py文件,里面放的是所有的公共信息;
3.创建了一个dev.py的开发环境配置信息,我只放了下面几组信息;
#coding=utf-8
from common import *

DEBUG = True 
#DEBUG = False
LOCAL_DEV = DEBUG   # this is a Product env
#LOCAL_DEV = False # this is a Product env
TEMPLATE_DEBUG = DEBUG

#django-tool-bar
if LOCAL_DEV:
    INTERNAL_IPS = ('127.0.0.1',)
    

CACHE_BACKEND='memcached://127.0.0.1:11211/'
CACHE_TIMEOUT = 60*60*24
CACHE_PREFIX = 'icgoo'

DJANGO_SETTINGS_MODULE = 'settings.dev'

SITE_URL = ''

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'icgoo',               # Or path to database file if using sqlite3.
        'USER': 'lidongdev',                  # Not used with sqlite3.
        'PASSWORD': 'asdasd',                # Not used with sqlite3.
        'HOST': '192.168.0.8',               # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.
    },
    'slave1': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'xiaofei_icgoo',            # Or path to database file if using sqlite3.
        'USER': 'root',                  # Not used with sqlite3.
        'PASSWORD': '820310',               # Not used with sqlite3.
        'HOST': 'localhost',               # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '3306',                    # Set to empty string for default. Not used with sqlite3.
    },
    'icbase': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'icgoo_icbase',            # Or path to database file if using sqlite3.
        'USER': 'lidongdev',                  # Not used with sqlite3.
        'PASSWORD': 'asdasd',               # Not used with sqlite3.
        'HOST': '192.168.0.8',               # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '3306',                    # Set to empty string for default. Not used with sqlite3.
    },     
}

**  这里的DJANGO_SETTINGS_MODULE变量以前是settings,因为以前的配置文件就是settings,这里变成了settings.dev文件; ***
4.common.py里还有一个文件需要修改一下
  DIRNAME = os.path.dirname(__file__) (old)
  DIRNAME = os.path.split(os.path.dirname(__file__))[0] (new)

  以前settings文件是直接放在根目录的,但现在的dev设置文件,是在settings文件夹下,所以还要退出settings文件夹.
5.运行
  ^Cxiaofei@xiaofei-desktop:~/work/branches/xiaofei/v44$ python manage.py runserver --settings=settings.dev
21 Nov 2012 09:58:14 root         INFO     Satchmo Started
21 Nov 2012 09:58:15 root         INFO     Satchmo Started
Validating models...

21 Nov 2012 09:58:16 purchaseorder.config DEBUG    added purchase order payments
socket setdefaulttimeout: 60 s
socket set timeout: 10 s
结束初始化第一次访问 http://cn.mouser.com 设置cookie语言货币取值为: 英文网站 美元货币 
has set timeout of socket is:  10 s
socket set timeout: 10 s


21 Nov 2012 09:58:17 shop.listeners DEBUG    Added default shop listeners
0 errors found
Django version 1.3, using settings 'settings.dev'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

问题

写道
1.发现所有的国际化都不自动翻译了??
  -- 我发现  我改为 --settings=v44.settings.dev就好了。。

猜你喜欢

转载自xiaolin0199.iteye.com/blog/2022508