BASE_DIR

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #  获取整个项目的根路径

__file__:可以获取自身文件的文件名。
os.path.abspath:可以获取文件的当前路径。
os.path.dirname:可以获取文件的父级目录。

ALLOWED_HOSTS

设置你的WEB项目可以通过哪些域名进行访问,即便是在Apache或Nginx等中绑定了,但是如果这里不允许的话,仍然是不能访问的。
DEBUG = False时,此项为必填项,如果不想填写,可通过ALLOW_HOST = ["*"]来允许所有的。

SECRET_KEY

Django根据自己算法生成的一大串随机数,本质是个加密盐,用于方式CSRF跨站请求伪造攻击。如果将Django项目部署到生产环境中,建议不要使用settings.py中输入字符串,而是采取以下两种方法读取:

  1. 存储在环境变量中
    import os
    SECRET_KEY = os.environ["SECRET_KEY"]
    
  2. 服务器上某个文件读取
    with open('secrect_key_file_path') as f:
     SECRET_KEY = f.read().strip()
    

INSTALLED_APPS

当我们新建一个App时,需要将我们创建的App注册到其中。

INSTALLED_APPS = [
    'django.contrib.admin',  # 管理员站点
    'django.contrib.auth',  # 认证授权系统
    'django.contrib.contenttypes',  # 内容类型矿建
    'django.contrib.sessions',  # 会话框架
    'django.contrib.messages',  # 消息框架
    'django.contrib.staticfiles',  # 管理静态文件的框架
]

为什么需要注册
新建的App如果不加到INSTALLED_APPS中,Django就不能找到App中的模板文件(appname/templates)和静态文件(appname/static)。
创建的app为什么有时不在INSTALLED_APPS里填写也可以正常使用
INSTALLED_APPS注册应用是为了和models.py里的模型/数据库交互使用的。

MIDDLEWARE

处理Django的request和response对象的钩子,Django接受到用户请求经过中间件处理请求,并执行相关处理反馈给用户。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',                # 内置的安全机制,保护用户与网站的通信安全
    'django.contrib.sessions.middleware.SessionMiddleware',         # 会话session功能
    'django.middlewart.locale.LocaleMiddleware',                    # 支持中文语言
    'django.middleware.common.CommonMiddleware',                    # 处理请求信息,规范化请求内容
    'django.middleware.csrf.CsrfViewMiddleware',                    # 开启 CSRF(跨站请求伪造) 防护功能
    'django.contrib.auth.middleware.AuthenticationMiddleware',      # 内置的用户认证系统
    'django.contrib.messages.middleware.MessageMiddleware',         # 内置的信息提示功能
    'django.middleware.clickjacking.XFrameOptionsMiddleware',       # 防止恶意程序点击劫持
    # 添加自定义中间件时,需要些在系统中的最后面
]

TEMPLATES

处理模板信息配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',       # 定义模版引擎
        # 内置模版引擎有 Django Templates 和 jinja2.Jinja2
        'DIRS': [os.path.join(BASE_DIR, 'APP/templates')],                 # 指定模版静态文件的物理路径,该目录下直接存放html文件
        'APP_DIRS': True,                                                   # 是否在APP里查找模版
        'OPTIONS': {                                                        # 用户填充在 RequestContext 上下文的调用函数选项,一般不需要修改
            'context_processors': [                                         # 上下文处理列表
                'django.template.context_processors.debug',                 # 调试
                'django.template.context_processors.request',               # 请求
                'django.contrib.auth.context_processors.auth',              # 认证
                'django.contrib.messages.context_processors.messages',      # 消息
            ],
        },
    },
]

数据库配置

DATABASES = {
    'default': {
     'ENGINE': 'django.db.backends.sqlite3',  # 使用默认的sqlite3数据库
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 }
}

如果需要使用MySql数据库需将配成修改为如下样式

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'OPTIONS': {
            "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",  # 设置为严格模式
            'charset': 'utf8mb4',  # 如果数据库需要存储emoji表情时,需将charset设置为utf8mb4
        }

    }
}

如果使用pymysql连接MySql数据库的话,还需要在应用的init.py文件中添加如下代码

import pymysql
pymysql.install_as_MySqldb()

AUTH_USER_MODEL

默认为auth.user,也可以为自定义用户模型。

静态文件目录

STATIC_URL = '/static/'  # 调用时的目录
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")  # 具体路径
]

国际化

TIME_ZONE = 'Asia/Shanghai'  # 设置时区
USE_I18N = True  # 默认为True,是否启用自动翻译系统
USE_L10N = True  # 默认为False,以本地格式显示数字和时间
USE_TZ = False  # 默认值为True,若使用了本地时间,必须设置为False

邮件服务配置

EMAIL_HOST = ""  # 发送者邮箱服务器
EMAIL_PORT = 25  # 端口
EMAIL_HOST_USER = ""  # 发送者用户名(邮箱地址)
EMAIL_USE_PASSWORD = ""  # 发送者密码
EMAIL_USE_SSL = True
DEFAULT_FROM_EMAIL = ""
  1. 数据库配置(默认)
    # Django默认支持Session,并且默认是将Session数据存储在数据库中(django_session表)。
    SESSION_ENGINE = "django.contrib.sessions.backends.db"  # 引擎(默认)
    SESSION_COOKIE_NAME = "sessionid"  # Session的cookie保存在浏览器上时的key,即:session=随机字符串(默认)
    SESSION_COOKIE_PATH = "/"  # Session的cookie保存的路径(默认)
    SESSION_COOKIE_DOMAIN = None  # Session的cookie保存的域名(默认)
    SESSION_COOKIE_SECURE = False  # 是否Https传输cookie(默认)
    SESSION_COOKIE_HTTPONLY = True  # 是否Session的cookie只支持http传输(默认)
    SESSION_COOKIE_AGE = 1209600  # Session的cookie失效时间(2周)(默认)
    SESSION_EXPIRE_AT_BROSWER_CLOSE = False  # 是否关闭浏览器使用Session过期(默认)
    SESSION_SAVE_EVERY_REQUEST = False  # 是否每次请求都保存Session,默认修改之后才保存(默认)改之后才保存(默认)
    
  2. 缓存配置
    SESSION_ENGINE = "django.contrib.sessions.backends.db"  # 引擎
    SESSION_CACHE_ALIAS = "default"  # 使用缓存别名,此处别名依赖于缓存配置
    SESSION_COOKIE_NAME = "sessionid"  # Session的cookie保存在浏览器上时的key,即:session=随机字符串(默认)
    SESSION_COOKIE_PATH = "/"  # Session的cookie保存的路径(默认)
    SESSION_COOKIE_DOMAIN = None  # Session的cookie保存的域名(默认)
    SESSION_COOKIE_SECURE = False  # 是否Https传输cookie(默认)
    SESSION_COOKIE_HTTPONLY = True  # 是否Session的cookie只支持http传输(默认)
    SESSION_COOKIE_AGE = 1209600  # Session的cookie失效时间(2周)(默认)
    SESSION_EXPIRE_AT_BROSWER_CLOSE = False  # 是否关闭浏览器使用Session过期(默认)
    SESSION_SAVE_EVERY_REQUEST = False  # 是否每次请求都保存Session,默认修改之后才保存(默认)
    
  3. 默认配置
    SESSION_ENGINE = "django.contrib.sessions.backends.file" # 引擎
    SESSION_FILE_PATH = None     # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() 
    SESSION_COOKIE_NAME = "sessionid"    # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串
    SESSION_COOKIE_PATH = "/"     # Session的cookie保存的路径
    SESSION_COOKIE_DOMAIN = None    # Session的cookie保存的域名
    SESSION_COOKIE_SECURE = False    # 是否Https传输cookie
    SESSION_COOKIE_HTTPONLY = True    # 是否Session的cookie只支持http传输
    SESSION_COOKIE_AGE = 1209600    # Session的cookie失效日期(2周)
    SESSION_EXPIRE_AT_BROWSER_CLOSE = False   # 是否关闭浏览器使得Session过期
    SESSION_SAVE_EVERY_REQUEST = False    # 是否每次请求都保存Session,默认修改之后才保存
    
0条评论

相关推荐

django教程

r

Django 2019-05-20 10:53:53

Celery

celery学习资料

Django 2019-05-25 18:41:55

Django-rest-framework教程

django-rest-framework教程。

Django 2019-07-18 16:33:26

django实用资料

django项目从0到1自己总结的实用的资料,大部分常用的功能这里都有

Django 2019-05-08 18:21:34