包含接收代码错误通知的人员列表。当DEBUG=False
和AdminEmailHandler
中设置了LOGGING
时,Django会通过邮件向这些人发送请求/响应周期中出现的异常的详细信息。
列表中的每个项目应该是一个元组 (全名, 电子邮件地址)。例如:
ADMINS=[('John', 'john@example.com'), ('Mary', 'mary@example.com')]#默认为[] (空列表)
BASE_DIR
Django项目文件夹所在目录得绝对路径
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))。
DEBUG
显示bug信息
DEBUG=True #默认值是True。
当你在部署项目在生产环境时,请切记设置DEBUG=False。当你设置DEBUG=False, 一定要设置ALLOWED_HOSTS选项, 否则会抛出异常;当你设置DEBUG=False,静态文件将无法访问,因为django的wsgiref无法处理静态文件
ALLOWED_HOSTS
配置允许哪些ip访问的
ALLOWED_HOSTS=[] #默认值为空* 代表允许所有的
设置ALLOWED_HOSTS是为了限定用户请求中的host值,以防止黑客构造包来进行头部攻击。该选项正确设置方式如下:
<code>DEBUG=True: ALLOWED_HOSTS可以为空</code><code>DEBUG=False: ALLOWED_HOSTS=['12.34.56.xx', 'www.example.com','127.0.0.1']</code>
正式部署项目时尽量不要设置ALLOWED_HOSTS=[‘*’]。
APPEND_SLASH
自动在地址后添加’/’
APPEND_SLASH=True #默认为true
当设置为 True 时,如果请求的 URL 不符合 URLconf 中的任何模式,并且不以斜线结尾,则会发出一个 HTTP 重定向到相同的URL,并附加一个斜线。注意,重定向可能会导致 POST 请求中提交的任何数据丢失。APPEND_SLASH 的配置只有在安装了 CommonMiddleware 的情况下才会使用。
PREPEND_WWW
PREPEND_WWW=False #默认为False
是否给没有“www.”子域的 URL 加前缀。只有在安装了 CommonMiddleware 的情况下才会使用
SECRET_KEY
SECRET_KEY是Django根据自己算法生成的一大串随机数,本质是个加密盐,用于防止CSRF(Cross-site request forgery)跨站请求伪造攻击。
<code><em># 方法一: 从环境变量中读取SECRET_KEY</em></code><code>import os</code><code>SECRET_KEY = os.environ['SECRET_KEY']</code><code><br></code><code><em># 方法二: 从服务器上Django项目文件价外的某个文件读取</em></code><code>with open('/etc/secret_key.txt') as f:</code><code> SECRET_KEY = f.read().strip()</code>
INSTALLED_APPS
添加应用
<code>INSTALLED_APPS =</code><code> [ </code><code>'django.contrib.admin', <em>// 管理后台应用 </em></code><code>'django.contrib.auth', <em>// 用户身份认证 </em></code><code>'django.contrib.contenttypes', <em>// 追踪ORM模型与应用的对应关系 </em></code><code>'django.contrib.sessions', <em>// session应用 </em></code><code>'django.contrib.messages', <em>// 消息应用 </em></code><code>'django.contrib.staticfiles', <em>// 管理站点静态文件 </em></code><code>'app1.apps.App1Config', <em># 默认已有 如果没有只要添加app名称即可 例如:'app1' </em></code><code><em># 新建的应用都要在这里添加</em></code><code> ]</code>
认证
AUTH_USER_MODEL
注册自定义用户模型
<code><em># ,格式:“app应用名.表名称”</em></code><code><em># 告诉django,不要在生成user表,用用户自定义的表</em></code><code>AUTH_USER_MODEL = 'users.User'</code>
AUTHENTICATION_BACKENDS
认证类后端类列表
AUTHENTICATION_BACKENDS=['django.contrib.auth.backends.ModelBackend']
LOGIN_REDIRECT_URL
登录后重定向
LOGIN_REDIRECT_URL='/accounts/profile/'
当 LoginView 没有得到 next GET参数时,登录后请求被重定向
LOGIN_URL
重定向登录的地址
LOGIN_URL='/accounts/login/'#默认
当使用login_required()装饰器、LoginRequiredMixin或AccessMixin时,重定向请求登录的 URL
LOGOUT_REDIRECT_URL
登出重定向
LOGOUT_REDIRECT_URL=None #默认,将不执行重定向,并显示注销视图。
PASSWORD_HASHERS
密码存储方式
<code>PASSWORD_HASHERS=[</code><code> 'django.contrib.auth.hashers.PBKDF2PasswordHasher',</code><code> 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',</code><code> 'django.contrib.auth.hashers.Argon2PasswordHasher',</code><code> 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',</code><code> ]</code>
AUTH_PASSWORD_VALIDATORS
用于检查用户密码强度的验证器列表。
AUTH_PASSWORD_VALIDATORS=[] #默认为空列表
如果需要添加请参考文章https://docs.djangoproject.com/zh-hans/4.1/topics/auth/passwords/#password-validation
MIDDLEWARE(中间件列表)
<code>MIDDLEWARE = [</code><code> 'django.middleware.security.SecurityMiddleware',</code><code> 'django.contrib.sessions.middleware.SessionMiddleware',</code><code> 'django.middleware.common.CommonMiddleware',</code><code> 'django.middleware.csrf.CsrfViewMiddleware',</code><code> 'django.contrib.auth.middleware.AuthenticationMiddleware',</code><code> 'django.contrib.messages.middleware.MessageMiddleware',</code><code> 'django.middleware.clickjacking.XFrameOptionsMiddleware',</code><code>]</code>
TEMPLATES
模板
<code>TEMPLATES = [</code><code> { <em># 基础模板</em></code><code> 'BACKEND': 'django.template.backends.django.DjangoTemplates',</code><code> <em># 全局模板,查找顺序 全局--->每一个app(static的查找顺序也是)</em></code><code> 'DIRS': [BASE_DIR, 'templates'],</code><code> 'APP_DIRS': True,</code><code> <em># 选项</em></code><code> 'OPTIONS': {</code><code> <em># 上下文处理器,作用:全局都可以拿到这个变量,例如在模板里面拿到request,user</em></code><code> 'context_processors': [</code><code> 'django.template.context_processors.debug',</code><code> 'django.template.context_processors.request',</code><code> 'django.contrib.auth.context_processors.auth',</code><code> 'django.contrib.messages.context_processors.messages',</code><code> ],</code><code> },</code><code> },</code><code>]</code>
ROOT_URLCONF
指定项目的根URL patterns配置文件
数据库配置项
DATABASES是一个字典,包含不同名称的数据库及其具体配置,必须始终有一个名称为default的数据库,默认使用SQLite数据库
官方提供了针对不同数据库的的不同操作引擎,以下是经常用的几个:
- sqlite数据库:’django.db.backends.sqlite3′,
- postgreSQL数据库:’django.db.backends.postgresql_psycopg2′,
- mysql数据库:’django.db.backends.mysql’
- oracle数据库:’django.db.backends.oracle’
mysql数据库连接
由于mysql默认引擎为MySQLdb,而mysqldb在python3支持不是很好,一般使用pymysql代替。在__init__.py文件中添加下面代码,__init__.py和setting.py 同一目录
__init__.py
import pymysql
pymysql.install_as_MySQLdb()
<code>DATABASES = {</code><code> 'default': { </code><code>'ENGINE': 'django.db.backends.mysql',</code><code> 'NAME': 'blog', <em>#你的数据库名称 数据库需要自己提前建好</em></code><code> 'USER': 'root', <em>#你的数据库用户名</em></code><code> 'PASSWORD': '', <em>#你的数据库密码</em></code><code> 'HOST': '', <em>#你的数据库主机,留空默认为localhost</em></code><code> 'PORT': '3306', <em>#你的数据库端口</em></code><code> }</code><code> }</code>
静态文件
STATIC_ROOT
当你运行”python manage.py collectstatic”命令的时候,Django会将各app下所有名为static的文件夹及其子目录复制收集到STATIC_ROOT。
STATIC_URL
STATIC_URL是静态文件URL,设置后可以通过使用{%static ‘img/xxx.jpg’ %}方式直接访问/static/文件夹里的静态文件。
STATICFILES_DIRS
1. 绝对路径(static/image/1.png),必须开放static路径
2. 一般情况下我们会尽量把静态文件只放在static文件夹或它的子目录下,所以上述两个设置对于一般项目是够的。那么问题来了,如果你还有一些文件夹中也有静态文件,可是文件夹并不是以static命名也不在static子目录里,此时你也希望搜集使用那些静态文件,你该怎么办呢?这时我们就要设置静态文件目录STATICFILES_DIRS值了。
3. 默认值为空。当你设置该选项后,”python manage.py collectstatic”命令会把static文件夹及静态文件目录STATICFILES_DIRS里的静态文件都复制到一份到STATIC_ROOT。比如下例中Django会将下面两个文件夹内容也复制到STATIC_ROOT。注意里面的路径必需是绝对路径哦。
<code>方式一:</code><code> # 设置django的静态文件目录</code><code> STATICFILES_DIRS = [</code><code> os.path.join(BASE_DIR,"static")</code><code> ]</code><code>方式二</code><code> STATICFILES_DIRS = [ </code><code>"/home/user/pictures",</code><code> "/opt/webfiles/myfiles",</code><code> ]</code>
STATICFILES_STORAGE
使用 collectstatic 管理命令收集静态文件时要使用的文件存储引擎。
STATICFILES_STORAGE='django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_URL
引用位于 STATIC_ROOT 中的静态文件时要使用的 URL。
Example: “static/” or “http://static.example.com/”
STATIC_URL='/' #默认
STATICFILES_FINDERS
知道如何找到不同位置的静态文件的查找器后端列表。
<code>STATICFILES_FINDERS=[</code><code> 'django.contrib.staticfiles.finders.FileSystemFinder',</code><code> 'django.contrib.staticfiles.finders.AppDirectoriesFinder',</code><code> ]</code>
文件上传
MEDIA_ROOT和MEDIA_URL
media文件价一般用于放置用户上传的文件。对于此文件夹的权限设置异常重要,因为用户可能会上传可执行的文件,影响网站和服务器的安全。
<code><em># 项目中存储上传文件的根目录[暂时配置],注意,uploads目录需要手动创建否则上传文件时报错</em></code><code>MEDIA_ROOT = os.path.join(BASE_DIR, "uploads")</code><code><em># 访问上传文件的url地址前缀(默认找到MEDIA_ROOT,跟static一样)</em></code><code>MEDIA_URL = "/media/"</code>
FILE_UPLOAD_TEMP_DIR
FILE_UPLOAD_TEMP_DIR=None
上传文件时要临时存储数据的目录(一般是大于 FILE_UPLOAD_MAX_MEMORY_SIZE 的文件)。如果 None,Django 将使用操作系统的标准临时目录。例如,在 *nix 风格的操作系统上,会默认为 /tmp。
FILE_UPLOAD_MAX_MEMORY_SIZE
上传的文件在被传送到文件系统之前的最大尺寸(以字节为单位)
FILE_UPLOAD_MAX_MEMORY_SIZE='2621440' #默认:2621440 (即 2.5 MB)。
国际化(语言与时间)
USE_I18N
默认为True,是否应该启用 Django 的翻译系统。如果设置为False不翻译机。
USE_L10N
默认为True,默认启用数据的本地化格式。
TIME_ZONE
默认:’America/Chicago’,表示本次安装的时区的字符串。
<code>LANGUAGE_CODE = 'zh-Hans' # 设置语言,'en-us':英文,'zh-Hans':中文 </code><code>TIME_ZONE = 'Asia/Shanghai' # 设置时区,'UTC':标准时区 格林威治时间,'Asia/Shanghai':亚洲上海时区</code><code>USE_I18N = True </code><code>USE_L10N = True </code><code>USE_TZ = False # 设置是否使用标准时区时间,我们设置为False 不适用标准时区</code>
邮箱配置
<code>EMAIL_HOST = 'smtp.qq.com' # 发送者邮箱服务器 </code><code>EMAIL_PORT = 25 # 端口</code><code>EMAIL_HOST_USER = '' # 发送者用户名(邮箱地址)</code><code>EMAIL_HOST_PASSWORD = '' # 发送者密码</code><code>EMAIL_USE_SSL = True </code><code>DEFAULT_FROM_EMAIL = 'xxx@qq.com'</code>
COOKIE与SESSION设置
Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。
<code>SESSION_ENGINE = 'django.contrib.sessions.backends.db' <em># 引擎(默认)</em></code><code>SESSION_COOKIE_NAME = "sessionid" <em># Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)</em></code><code>SESSION_COOKIE_PATH = "/" <em># Session的cookie保存的路径(默认)</em></code><code>SESSION_COOKIE_DOMAIN = None <em># Session的cookie保存的域名(默认)</em></code><code>SESSION_COOKIE_SECURE = False <em># 是否Https传输cookie(默认)</em></code><code>SESSION_COOKIE_HTTPONLY = True <em># 是否Session的cookie只支持http传输(默认)</em></code><code>SESSION_COOKIE_AGE = 1209600 <em># Session的cookie失效日期(2周)(默认)</em></code><code>SESSION_EXPIRE_AT_BROWSER_CLOSE = False <em># 是否关闭浏览器使得Session过期(默认)</em></code><code>SESSION_SAVE_EVERY_REQUEST = False <em># 是否每次请求都保存Session,默认修改之后才保存(默认)</em></code>
DATE_FORMAT
默认:’Nj,Y’ (例如 Feb.4,2003)
在系统的任何部分显示日期字段时使用的默认格式。例子
<code>USE_L10N = False</code><code>DATETIME_FORMAT = 'Y-m-d H:i:s'</code>
请注意,如果 USE_L10N 被设置为 True,那么本地决定的格式具有更高的优先权,并将被应用。
DATE_INPUT_FORMATS
在日期字段上输入数据时接受的格式列表。
<code>DATE_INPUT_FORMATS<em>#默认:</em></code><code>[</code><code> '%Y-%m-%d', <em># '2006-10-25'</em></code><code> '%m/%d/%Y', <em># '10/25/2006'</em></code><code> '%m/%d/%y', <em># '10/25/06'</em></code><code> '%b %d %Y', <em># 'Oct 25 2006'</em></code><code> '%b %d, %Y', <em># 'Oct 25, 2006'</em></code><code> '%d %b %Y', <em># '25 Oct 2006'</em></code><code> '%d %b, %Y', <em># '25 Oct, 2006'</em></code><code> '%B %d %Y', <em># 'October 25 2006'</em></code><code> '%B %d, %Y', <em># 'October 25, 2006'</em></code><code> '%d %B %Y', <em># '25 October 2006'</em></code><code> '%d %B, %Y', <em># '25 October, 2006'</em></code><code>]</code>
格式将按顺序被尝试,使用第一个有效的格式。当 USE_L10N为True 时,将采用本地规定的格式具有更高的优先权。
DATETIME_FORMAT
默认:’Nj,Y,P’ (例如 Feb.4,2003,4p.m.)
在系统的任何部分显示日期时间字段时使用的默认格式。如果 USE_L10N被设置为 True,那么本地决定的格式具有更高的优先权并将被应用。例子:
<code>USE_L10N = False</code><code>DATE_FORMAT = 'Y-m-d'</code>
DATETIME_INPUT_FORMATS
在日期时间字段上输入数据时可接受的格式列表。格式将按顺序被尝试,使用第一个有效的格式。默认:
<code>[</code><code> '%Y-%m-%d %H:%M:%S', <em># '2006-10-25 14:30:59'</em></code><code> '%Y-%m-%d %H:%M:%S.%f', <em># '2006-10-25 14:30:59.000200'</em></code><code> '%Y-%m-%d %H:%M', <em># '2006-10-25 14:30'</em></code><code> '%m/%d/%Y %H:%M:%S', <em># '10/25/2006 14:30:59'</em></code><code> '%m/%d/%Y %H:%M:%S.%f', <em># '10/25/2006 14:30:59.000200'</em></code><code> '%m/%d/%Y %H:%M', <em># '10/25/2006 14:30'</em></code><code> '%m/%d/%y %H:%M:%S', <em># '10/25/06 14:30:59'</em></code><code> '%m/%d/%y %H:%M:%S.%f', <em># '10/25/06 14:30:59.000200'</em></code><code> '%m/%d/%y %H:%M', <em># '10/25/06 14:30'</em></code><code>]</code>
TIME_FORMAT
默认:’P’ (例如 4p.m.)
在系统的任何部分显示时间字段时使用的默认格式。请注意,如果 USE_L10N 被设置为 True,那么本地决定的格式具有更高的优先权,并将被应用。
TIME_INPUT_FORMATS
在时间字段上输入数据时可接受的格式列表。默认:
<code>[</code><code> '%H:%M:%S', <em># '14:30:59'</em></code><code> '%H:%M:%S.%f', <em># '14:30:59.000200'</em></code><code> '%H:%M', <em># '14:30'</em></code><code>]</code>
格式将按顺序被尝试,使用第一个有效的格式。当 USE_L10N 为 True 时,将采用本地规定的格式,具有更高的优先权。
YEAR_MONTH_FORMAT
默认:’FY’
在 Django admin change-list 页面中,当只显示年和月的时候,默认的日期字段的格式也可能被系统的其他部分使用。
例如,当 Django 管理员的变更列表页面被日期 drilldown 过滤时,给定月份的头显示月份和年份,不同的地域有不同的格式。请注意,如果 USE_L10N 设置为 True,则相应的本地决定的格式具有更高的优先权,并将被应用。
USE_X_FORWARDED_HOST
默认为False,用于指定是否使用 X-Forwarded-Host头,而不是 Host头。只有在使用设置该头的代理时才应启用。此设置优先于 USE_X_FORWARDED_PORT。
USE_X_FORWARDED_PORT
默认为False,用于指定是否使用X-Forwarded-Port头,而不是 SERVER_PORT“META 变量。只有在使用设置该头的代理时,才应启用。
WSGI_APPLICATION
默认:None
Django 内置服务器(如 runserver)将使用的 WSGI 应用对象的完整 Python 路径。django-admin startproject 管理命令将创建一个标准的 wsgi.py 文件,其中有一个 application 可调用,并将此配置指向该 application。
如果没有设置,将使用 django.core.wsgi.get_wsgi_application() 的返回值。在这种情况下, runserver 的行为将与之前的 Django 版本相同。
SITE_ID
默认为空,当前网站在 django_site 数据库表中的 ID为整数。这样应用数据就可以挂到特定的站点上,一个数据库可以管理多个站点的内容。
DISALLOWED_USER_AGENTS
DISALLOWED_USER_AGENTS =[] #默认空列表
编译后的正则表达式对象列表,系统范围内不允许访问任何页面的User-Agent 字符串,用于限制机器人/爬虫。只有在安装了 CommonMiddleware 的情况下才会使用
SERIALIZATION_MODULES
序列化器定义的模块字典,以该序列化类型的字符串标识符为键。例如,要定义一个 YAML 序列化器,使用:
SERIALIZATION_MODULES = {'yaml': 'path.to.yaml_serializer'}
暂无评论内容