django2.0 配置介绍


发布时间:2019-04-01 13:48    作者: Uncle Hui   已过去:1 年,4 月   阅读总量:778 已被赞:0


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访问即可

]

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,表示会在APPtemplate/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 ;第二种用Djangostatic语法

{% 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;

    }

点赞

0




登陆后方可评论