欢迎访问个人博客

Abstract

在上一篇Django环境搭建完毕,默认会在生成一个和项目同名称的文件夹,Django入口的配置都是在该目录下的settings.py

比如项目名称为 simpleblog,则配置文件为simpleblog、simpleblog/settings.py


配置介绍

Debug

DEBUG 配置默认为 True, 设置为TRUE会暴露出一些出错信息或者配置信息以方便调试。所以一般在开发测试阶段我们设置其为TRUE, 上线之后设置其为FALSE,防止配置信息或者敏感出错信息泄露。

ALLOWED_HOSTS

ALLOWED_HOSTS 是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问。

强烈建议不要使用*通配符去配置,另外当DEBUG设置为False的时候必须配置这个配置,否则会抛出异常。

配置模板如下:

1
2
3
4
5
ALLOWED_HOSTS = [
'.example.com', # Allow domain and subdomains
'.example.com.', # Also allow FQDN and subdomains
'139.198.xxx.xxx', # 测试环境我们一般允许自己的主机IP访问即可
]

Refer to https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts

INSTALLED_APPS

一般在项目中我们会通过python manage.py startapp appname 创建自己的APP,当然这个并不是必须的。如果创建了,则需要将其加入到 INSTALLED_APPS 数组中才可以被访问到。

配置模板如下:

1
2
3
4
5
6
7
8
9
10
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# config your app here
'appname',
]

数据库配置

Django 默认配置的sqlite数据库,如果只是我们测试用这个就够了,但是实际中我们大多项目都会选择使用MySQL等。

目前Django官网默认支持的数据库有

  • MySQL
  • PosgreSQL
  • Oracle
  • Sqlite

如果你的项目适合用MongoDB,你可以参考一下连接
https://staltz.com/djangoconfi-mongoengine/#/

这里给出MySQL配置的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': 'simpleblog',
'USER': 'blog',
'PASSWORD': 'blog',
'HOST': '127.0.0.1',
'PORT': 3306,
'OPTIONS' : {
'init_command': 'SET storage_engine=INNODB',
'charset':'utf8',
}
}
}

Refer to: https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-DATABASES


模板配置

在setting.py中 关于模板的配置都在TEMPLATES 数组中,这个里面需要关于的有两个配置:

  • APP_DIRS
  • DIRS

APP_DIRS默认配置为True,表示会在APP的 template/myapp/ 下面寻找模板

DIRS默认为空,当需要配置一些多个应用之间公用的模板文件的时候,可以新增一个目录然后配置到这个配置中,比如:

在项目根目录下新增templates目录(和myapp同级)

1
2
3
4
5
6
7
8
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
'APP_DIRS': True,
'OPTIONS': {
... ...
]

Refer to: https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-TEMPLATES


静态文件配置

静态文件相关常见的配置有一下三个

  • STATIC_URL
  • STATIC_ROOT
  • STATICFILES_DIRS

对于STATIC_URL 官网是这么介绍的:

  • 确保在INSTALLED_APPS 中添加了django.contrib.staticfiles
  • 在setting.py中配置STATIC_URL=’/static/‘
  • 在模板中访问静态资源

    访问有两种方式,第一种直接绝对路径 /static/my_app/example.jpg ;第二种用Django的static语法

1
\{\% load static \%\}

默认找到 my_app/static/my_app/example.jpg


另外一般我们如果有多个应用的时候,有些静态文件是多个应用之间可以互相公用的,这个时候就用到了STATICFILES_DIRS

比如我们在项目目录下新增一个STATIC目录(和APP目录同级)将其配置到STATICFILES_DIRS里面,或者其他地方。如下:

1
2
3
4
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static/'),
'/opt/static/',
)

比如这里有个CSS文件static/css/blog.css,在模板中我们配置如下: \{\% static 'css/blog.css' \%\} 即可


对于STATIC_ROOT是为了方便项目发布的时候对外统一管理静态资源,可以使用命令collectstatic 把项目所有的静态资源收集起来存放到 STATIC_ROOT,然后在比如Nginx中配置静态资源访问路径

1
2
3
4
5
6
7
8
# in django setting
STATIC_ROOT = '/opt/nginx/static'
# in nginx config
location /static {
# alias /project/django/simpleblog/static;
alias /opt/nginx/static;
}

Refer to:

———————————————-更多精彩请关注————————————-
公众号: DailyJobOps