Abstract
在上一篇Django环境搭建完毕,默认会在生成一个和
项目同名称
的文件夹,Django入口的配置都是在该目录下的settings.py
比如项目名称为 simpleblog,则配置文件为
simpleblog、simpleblog/settings.py
配置介绍
Debug
DEBUG 配置默认为 True, 设置为TRUE会暴露出一些出错信息或者配置信息以方便调试。所以一般在开发测试阶段我们设置其为TRUE
, 上线之后设置其为FALSE
,防止配置信息或者敏感出错信息泄露。
ALLOWED_HOSTS
ALLOWED_HOSTS
是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问。
强烈建议不要使用*通配符去配置,另外当DEBUG设置为False的时候必须配置这个配置,否则会抛出异常。
配置模板如下:
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
数组中才可以被访问到。
配置模板如下:
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配置的例子
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同级)
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语法
{% load static %}
![]({% static )
默认找到 my_app/static/my_app/example.jpg
另外一般我们如果有多个应用的时候,有些静态文件是多个应用之间可以互相公用的,这个时候就用到了STATICFILES_DIRS
。
比如我们在项目目录下新增一个STATIC
目录(和APP目录同级)将其配置到STATICFILES_DIRS里面,或者其他地方。如下:
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中配置静态资源访问路径
# in django setting
STATIC_ROOT = '/opt/nginx/static'
# in nginx config
location /static {
# alias /project/django/simpleblog/static;
alias /opt/nginx/static;
}
Refer to:
- https://docs.djangoproject.com/en/1.11/howto/static-files/
- https://docs.djangoproject.com/en/1.11/ref/settings/#static-files
----------------------------------------------更多精彩请关注-------------------------------------
网友评论