从settings文件建立django开发索引


  django项目的开发过程中,在对整个框架不够了解之前,内容仅靠模糊的记忆可能会导致一系列的未知问题(例如一个字母写错)。
  全局配置文件settings中的配置,往往可以映射整个项目所需要的内容。
  (django版本1.11)

默认的配置

  其实不算是默认的,只是在创建项目之后,已经为我们写了一些配置(当然,你可以在保证正确的前提下随意更改它们的顺序),在它的基础上进行更改,我将按默认的顺序从上到下进行介绍

1. 主机验证 ALLOWED_HOSTS

  表示此Django站点可以投放的主机/域名的字符串列表。这是防止HTTP主机头部攻击的安全措施。
ALLOWED_HOSTS

  • “ * ”表示可以匹配任何ip,在这种情况下,您有责任提供您自己对Host头的验证。
  •   如果主机头(或X-Forwarded-Host(如果USE_X_FORWARDED_HOST已启用))与此列表中的任何值不匹配,则django.http.HttpRequest.get_host()方法将引发SuspiciousOperation。
  •   当DEBUG为True并且ALLOWED_HOSTS为空时,主机将针对[‘localhost’,’127.0.0.1’,’[:: 1]’]进行验证。
  •   此验证仅适用于get_host();如果您的代码直接从request.META访问Host头,您将绕过此安全保护。

2. INSTALLED_APPS

  这应该是django中最常用的配置,在每个app创建之后,尽量都在这里进行配置

INSTALLED_APPS
  django-simple-captcha是django中的一个验证码包,这个包本身也是一个django的app,所以需要写在这里,并且别忘了给这个包添加路由。

3. TEMPLATES

这里是进行模板文件目录的配置,往往只需更改图中红线标注的位置。

TEMPLATES

4. DATABASES

  DATABASES是进行数据库的配置,默认的数据库是sqlite,下图是更改为mysql之后的配置

DATABASES
  注意NAME是指数据库名

扫描二维码关注公众号,回复: 1000128 查看本文章

5. 语言和时区

语言和时区

  • 这里的语言配置会影响到admin后台中的展示语言
  • 默认的时间是格林尼治时间,我们处于东八区,配置北京和上海的都可以

6. 静态文件配置 STATIC

  静态文件的配置是为了我们能应用本地的css,js,图片等;
STATIC_URL已经为我们写好,我们在加上一个STATICFILES_DIRS(静态文件的路径)
静态文件

添加的配置

  添加的配置是在开发过程根据需要添加在settings文件中的,排名不分先后,因为整个文件都是不需要有顺序的。可能还不是全部的,但尽量会在使用之后更新.

1. 自定义用户模型 AUTH_USER_MODEL

  配置用户模型类,就是django中admin后台的用户,但是其中的信息未必有我们需要的字段,因此我们需要自定义用户模型,在这里配置之后,就会不在使用默认的用户模型

用户模型类

2. 自定义验证类 AUTHENTICATION_BACKENDS

  这是登录时使用的验证类,同上,因为默认的未必能满足我们的需求。

自定义验证类

3. 邮箱配置EMAIL

 这是发送邮件进行的配置

邮箱配置

4. LOGIN_URL

在使用了login_required装饰器之后,指定没有登录情况下访问路由失败而跳转的页面
LOGIN_URL

5. 配置Django服务器日志

   首先在项目的根目录下创建一个log文件夹,然后在settings中添加以下内容
在运行项目时就会在log文件夹中生成日志文件

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}  #日志格式
    },
    'filters': {
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
            },
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'log/all.log',     # 日志输出文件
            'maxBytes': 1024*1024*5,       # 文件大小
            'backupCount': 5,              # 备份份数
            'formatter': 'standard',       # 使用哪种formatters日志格式
        },
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'log/error.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter': 'standard',
            },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'request_handler': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'log/error.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter': 'standard',
            },
        'scprits_handler': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'log/script.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter': 'standard',
            }
    },
    'loggers': {
        'django': {
            'handlers': ['default', 'console'],
            'level': 'DEBUG',
            'propagate': False
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False,
            },
        'scripts': {
            'handlers': ['scprits_handler'],
            'level': 'INFO',
            'propagate': False
        },
        'blog.views': {
            'handlers': ['default', 'error'],
            'level': 'DEBUG',
            'propagate': True
        },
    }
}

猜你喜欢

转载自blog.csdn.net/xinyan233/article/details/80106855