Django基础配置介绍

作者: 菩提老鹰 | 来源:发表于2017-08-24 14:34 被阅读149次

    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:

    ----------------------------------------------更多精彩请关注-------------------------------------

    公众号: DailyJobOps

    相关文章

      网友评论

        本文标题:Django基础配置介绍

        本文链接:https://www.haomeiwen.com/subject/tnxedxtx.html