#settings.py文件没有过多的解译,有问题可以留言或者加QQ及微信群讨论。
在我们安装完django后,会有一个可执行文件django-admin.py。它是一个命令行工具,可以执行一些管理任务,比如创建Django项目。
在django里创建这些的动作还是比较简单的。如下为创建工程以及app。
django-admin.py startproject liuxin 创建了一个工程 名为置当前liuxin
python manage.py startapp idc 在liuxin工程下创建一个app名为idc
当然创建很简单,现在简单的说下配置。当我们创建完工程后,在这个liuxin项目里会有一个manage.py文件,它是对django-admin.py的简单包装,它在创建每个Django project时都会自动添加在项目目录下的,它的功能是将Django project放到sys.path目录中,同时设置DJANGO_SETTINGS_MODULE环境变量为当前project的setting.py文件。
django-admin.py是调用django.core.management来执行命令:
#!/usr/bin/env python
from django.core import management
if __name__ == "__main__":
management.execute_from_command_line()
excute_from_command_line()函数会根据命令行参数解析出命令的名称,根据命令名称调用相应的Command执行命令。
manage.py还有一些相关的命令以后随着应用模块和数据库的应用会介绍到。
在工程liuxin下还会有一个名liuxin的文件夹,也可以认为是liuxin这个项目的主配置文件夹。当创建liuxin这个项目后,这个文件夹里会的这以几个文件生成。 __init__.py:python特性,可以是空文件,只是表明这个文件夹是一个可以导入的包。
settings.py:配置文件,主要是数据库信息、加载模块的信息。
url.py:URL配置文件,指定函数与URL的映射关系。
wsgi.py:暂时不用了解,开发都是用Django自带的测试服务器,用nginx/apahce+wsgi启动Django时才用得上。
创建完工程后,就可以启动自带的服务器来调试了
python manage.py runserver
python manage.py runserver 8080 #修改端口号,默认的是8000
python manage.py runserver 0.0.0.0:8000 #服务器监听任意IP的8000端口
以下是settings文件的内容,url.py这里暂时先不说,后面会介绍到。
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'upload_files').replace('\\', '/')
# Quick-start development settings - unsuitable for production
# See
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '=$)9pp3oskd#n8+26=(-jhjj65+=u#9(h&e87k70abhfy#xnsg'
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
# DEBUG = False
TEMPLATE_DEBUG = True
DEBUG_TOOLBAR_PATCH_SETTINGS = False
ALLOWED_HOSTS = ['*']
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(BASE_DIR, 'templates').replace('\\','/'),
# '/Library/Python/2.7/site-packages/debug_toolbar/templates',
)
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'idc',
'dns',
'monitors',
# 'debug_toolbar',
'debugtools',
'suggest',
'audit',
'django.contrib.comments',
'django.contrib.sites',
)
SITE_ID=1
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
ROOT_URLCONF = 'liuxin.urls'
# INTERNAL_IPS = ('127.0.0.1',)
INTERNAL_IPS = ('0.0.0.0',)
WSGI_APPLICATION = 'liuxin.wsgi.application'
# Database
#
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.mysql',
# 'NAME': 'om',
# 'USER': 'om',
# 'PASSWORD': '123qweasdZXC',
# 'HOST':'10.0.0.151',
# 'PORT':'3306',
# }
# }
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.mysql',
# 'NAME': 'om',
# 'USER': 'root',
# 'PASSWORD': 'aaaaaa',
# 'HOST':'127.0.0.1',
# 'PORT':'3306',
# }
# }
# Internationalization
#
LANGUAGE_CODE = 'en-us'
#TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
# USE_TZ = True
USE_TZ = False
# Static files (CSS, JavaScript, Images)
#
STATIC_ROOT = ''
# STATIC_PATH='/static/'
STATIC_URL = '/static/'
# STATIC_ROOT = os.path.join(PROJECT_ROOT,'static')
STATICFILES_DIRS = (
# '/Users/liuxin/Documents/liuxin/static/',
os.path.join(BASE_DIR, 'static').replace('\\','/'),
)
SAE_DEFAULT_STORAGE_DOMAIN_NAME = '0.0.0.0'
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
'complete': {
'format': '[%(levelname)s %(asctime)s @ %(process)d] (%(pathname)s/%(funcName)s:%(lineno)d) - %(message)s'
},
'online': {
'format': '[%(levelname)s %(asctime)s @ %(process)d] - %(message)s'
}
},
'handlers': {
'null': {
'level':'DEBUG',
'class':'django.utils.log.NullHandler',
},
'default': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename' : os.path.join(BASE_DIR, 'logs/default.log').replace('\\','/'),
'formatter':'complete'
},
'file': {
'level':'DEBUG',
'class':'logging.FileHandler',
'formatter': 'online',
'filename' : os.path.join(BASE_DIR, 'logs/errors.log').replace('\\','/')
},
'ac_file': {
'level':'DEBUG',
'class':'logging.FileHandler',
'formatter': 'complete',
'filename' : os.path.join(BASE_DIR, 'logs/service.log').replace('\\','/')
},
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'complete'
},
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
}
},
'loggers': {
'': {
'handlers':['file'],
'propagate': False,
'level':'DEBUG',
},
'access_log': {
'handlers':['default', 'console'],
'propagate': False,
'level':'INFO',
},
'django.request': {
'handlers': ['ac_file', 'mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
这里面有模板的配置、数据库的配置、添加新的应用、中间件、表态文件路径等,建议先和默认文件对比下,我这里都是已经改了一些的了,比如时区。
阅读(9043) | 评论(1) | 转发(0) |