Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1083708
  • 博文数量: 185
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2640
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-01 13:46
个人简介

鸟在笼中,恨关羽不能张飞;Survival of the fittest

文章分类

全部博文(185)

分类: Web开发

2015-06-01 00:06:05

#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,
        },
    }
}



这里面有模板的配置、数据库的配置、添加新的应用、中间件、表态文件路径等,建议先和默认文件对比下,我这里都是已经改了一些的了,比如时区。




阅读(8335) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

微笑Sky2016-02-03 11:30:56