python后台架构Django教程:项目配置setting讲解

2018-10-2609:08:33后端程序开发Comments3,023 views字数 5261阅读模式

创建了一个名称为hello的项目。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

一个新建立的项目结构大概如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

hello/
    manage.py
    hello/
        __init__.py
        settings.py
        urls.py
        wsgi.py

Django项目的设置文件位于settings.py文件中。这个文件,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

ADMINS文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:[](空列表)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

所有获得代码错误通知的人的邮件地址列表。当DEBUG=False,并且一个视图引发了异常时,Django将会给这个列表里的人发一封含有完整异常信息的电子邮件。列表中的每个项目都应该是(全名,电子邮件地址)的元组。例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

[(‘John’, ‘john@example.com’), (‘Mary’, ‘mary@example.com’)]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

ALLOWED_HOSTS文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:[](空列表)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

这是新手比较困惑的一个配置项。该配置项列表中包含的是Django站点可以为之提供服务的主机/域名。 也就是哪些主机或IP能够访问Django服务器!列表里的所有元素是共同存在的关系,不纯在冲突、优先级和排斥的关系。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

列表中的值可以是localhost、www.example.com或者.example.com形式的域名。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

也可以是IP地址,比如:137.2.4.1、192.168.1.1、0.0.0.0、127.0.0.1文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

还可以是通配符’*’,表示所有外部主机都可以访问Django。但这种情况具有安全风险,在线上环境不要使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

对于0.0.0.0,表示局域网内的主机都可以访问Django。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

当DEBUG为True和ALLOWED_HOSTS为空时,默认相当于配置:[‘localhost’, ‘127.0.0.1’, ‘[:: 1]’]。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

APPEND_SLASH文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:True文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

当设定为True时,如果请求的URL没有匹配到URLconf里面的任何一条URL路由设置,并且没有以/(斜杠)结束,该请求将重定向到以请求URL加/的URL地址。需要注意的是重定向有可能导致POST提交的数据丢失。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

通俗的解释就是,如果你在写url时忘记了在最后添加一个斜杠,Django会默认帮你加上!请尽量保持默认值!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

APPEND_SLASH设置只有在安装了CommonMiddleware中间件时才会启用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

DATABASES文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

# 数据库配置
DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',  #数据库驱动名
            'NAME': 'mydatabase', #数据库名称
            'USER': 'mydatabaseuser',  # 用户名
            'PASSWORD': 'mypassword', #密码
            'HOST': '127.0.0.1', #数据库所在的主机。
            'PORT': '3306',  # 端口号
        }
}

其中ENGINE指定使用的数据库后端。 内建的数据库后端名称有:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'

Django默认使用sqlite数据库,以文件的形式存在。当使用sqlite为数据库时只需要配置上述NAME属性为数据库文件的完整路径。指定路径时,请始终使用前向的斜杠,即使在Windows 上(例如C:/homes/user/mysite/sqlite3.db)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

DEBUG文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

打开/关闭调试模式。最重要的设置之一!默认值是False,你没有看错!只是在settings.py中又帮我们设置为True了,打开了调试模式,方便开发者和测试者的!线上部署网站的时候务必设置为False。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

调试模式下可以显示错误页面的细节。若你的应用产生了一个异常,Django会显示追溯细节,包括许多环境变量的元数据, 比如所有当前定义的Django设置。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

DEFAULT_CHARSET文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:’utf-8’文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

HttpResponse响应对象的默认字符集。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

DEFAULT_CONTENT_TYPE文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:’text/html’文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

HttpResponse对象的默认内容类型。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

DEFAULT_FROM_EMAIL文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:’webmaster@localhost’文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认的电子邮件发送地址,即发送方。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

INSTALLED_APPS文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

Django核心配置项!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

当前Django项目中启用的app列表。 每个元素应该是一个Python的点分路径,字符串格式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

项目内每个启用的app,包括Django内置的contrib都必须在这个列表里注册,否则创建数据表、调用功能等等都无法进行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

一个典型的配置如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

# app注册
INSTALLED_APPS = [
    'app1',  #将自定义模块注册到项目中
    'app2',   #将自定义模块注册到项目中
    'django.contrib.admin',  #admin站点
    'django.contrib.auth',  #身份认证系统
    'django.contrib.contenttypes', #内容类型框架
    'django.contrib.sessions', #会话框架
    'django.contrib.messages', #消息框架
    'django.contrib.staticfiles', #静态文件管理框架
]

LANGUAGE_CODE文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:’en-us’文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

当前项目所使用的语言。默认为英语。汉语是zh-hans,千万不要写成别的,比如‘chinese’之类!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

USE_I18N必须设置为True才能使LANGUAGE_CODE生效。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

TIME_ZONE文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认:’America/Chicago’文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

时区设置。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

注意,这个配置项的值不一定要和服务器的时区一致。例如,一个服务器可上可能有多个Django站点,每个站点都有一个单独的时区设置。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

如果要设为中国时间,也就是北京时间,请赋值:TIME_ZONE = ‘Asia/Shanghai’。注意是上海,不是北京,囧!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

当USE_TZ为False时,它将成为Django存储所有日期和时间数据时,使用的时区。 当USE_TZ为True 时,它是Django显示模板中的时间,解释表单中的日期,使用的时区。所以,通常我们都将USE_TZ同时设置为False!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

注:在Windows 环境中,Django不能可靠地交替其它时区。如果你在Windows上运行Django,TIME_ZONE必须设置为与系统时区一致。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

MEDIA_ROOT文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:”(空字符串)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

用户上传的文件,所在目录的,文件系统绝对路径。也就是指示上传文件放到哪里。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

例如: “/var/www/example.com/media/”文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

警告:MEDIA_ROOT和STATIC_ROOT必须设置为不同的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

MEDIA_URL文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:”(空字符串)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

MEDIA_URL指向MEDIA_ROOT所指定的media文件,用来管理保存的文件。该URL设置为非空值时,必须以斜杠“/”结束。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

若你打算在模版中使用{{ MEDIA_URL }},必须在TEMPLATES的context_processors设置中添加django.template.context_processors.media。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

警告:MEDIA_URL和STATIC_URL必须设置为不同的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

SECRET_KEY文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

当前Django项目实例的密钥。用于提供cryptographic签名,是一个唯一的并且不可预测的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

TEMPLATES文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

Django模板系统相关的配置。列表中每一项都是一个字典类型数据(类似DATABASE配置),可以配置模板不同的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

示例如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [], #DIRS:定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。
        'APP_DIRS': True, #APP_DIRS:告诉模板引擎是否应该进入每个已安装的应用中查找模板。通常请将该选项保持为True。
        # OPTIONS中包含了具体的后端设置。
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

BACKEND:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认:未指定文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

要使用的模板后端。 内置模板后端有:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

'django.template.backends.django.DjangoTemplates'
'django.template.backends.jinja2.Jinja2'

通过将BACKEND设置为完全限定路径(即’mypackage.whatever.Backend’),你可以使用第三方提供的模板后端。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

USE_I18N文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:True文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

这是一个布尔值,指定Django的翻译系统是否开启。如果设置为False,Django会做一些优化,不去加载翻译机制。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

USE_L10N文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:False文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

一个布尔值,用于决定是否开启数据本地化。如果此设置为True,例如Django将使用当前语言环境的格式显示数字和日期。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

USE_TZ文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:False文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

一个布尔值,用来指定是否使用指定的时区(TIME_ZONE)的时间。若为True, 则Django会使用内建的时区的时间;否则, Django将会使用本地的时间。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

如果我们将TIME_ZONE设置成了Asia/Shanghai, 那么务必同时将USE_TZ改成False!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

SESSION_EXPIRE_AT_BROWSER_CLOSE文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:False文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

是否在用户关闭浏览器时过期会话。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

STATIC_ROOT文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:None文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

在DEBUG设置为False时,也就是线上环境时,Django项目里的静态文件(js\css\plugins)会无法使用。这是,需要运行python manage.py collectstatic,将静态文件统一收集到一个目录下。STATIC_ROOT配置的就是该目录的绝对路径。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

示例:”/var/www/example.com/static/”文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

这个目录,刚开始应该是一个空目录。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

STATIC_URL文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:None文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

引用位于STATIC_ROOT中的静态文件时使用的网址。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

示例:”/static/”或”https://static.example.com/”文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

该URL设置为非空值时,必须以斜杠“/”结束。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

WSGI_APPLICATION文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

默认值:None文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

Django的内置服务器(例如runserver)将使用的WSGI应用程序对象的完整Python路径。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

Django使用WSGI协议与外部进行通信。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

由django-admin startproject xxx命令创建的Django项目,将自动创建一个简单的wsgi.py模块,里面有一个可调用的application变量,WSGI_APPLICATION配置项的值就指向这个application变量。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

MIDDLEWARE文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

要使用的中间件列表。Django-admin命令创建的新项目中,settings.py文件里默认会为MIDDLEWARE配置项添加一系列Django内置的中间件,我们保持它不变就好了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

注释掉MIDDLEWARE 中的’django.middleware.csrf.CsrfViewMiddleware’,因为这句话会进行校验,容易产生403错误。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

添加自己的配置项文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

如果要添加自己的配置项,需遵循以下准则:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

配置项名称必须全为大写。 不要使用一个已经存在的设置.文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/7258.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/7258.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定