DJANGO 配置文件


1.Django 配置信息

  1. 基本配置信息:

    • BASE_DIR = Path(__file__).resolve().parent.parent

      django项目的工作目录。

    • SECRET_KEY = ')o+504x)+hi#xh7ap01ouru@spqn5tj3od%9xlcd!0d9=0#bk('

      密匙配置,在创建项目的时候产生,一般无需修改。主要用于重要数据的加密处理。提高项目安全性,避免受到攻击者的恶意破坏。

    • DEBUG = True

      调试模式,若在开发模式,则应该设置为True,若项目部署上线则应该改为False。在开发模式中Django会自动检测代码是否被修改,根据结果确认是否重启服务器。

    • ALLOWED_HOSTS = []

      域名访问权限,设置可访问的域名,默认为空。当DEBUG = True时且ALLOWED_HOSTS为空列表时,项目只允许以localhost或127.0.0.1在浏览器访问,当DEBUG = False时,ALLOW_HOSTS 为必填项,负责项目无法启动,若想所有域名均可访问,设置ALLOWED_HOSTS = ['*']。

    • INSTALLED_APPS = [
          'django.contrib.admin', #  后台管理系统
          'django.contrib.auth', #  用户认证系统
          'django.contrib.contenttypes', #  记录项目中所有的model元数据
          'django.contrib.sessions', #  session会话功能,用于标识当前访问网站的用户身份,记录用户信息。
          'django.contrib.messages', #  消息提示功能
          'django.contrib.staticfiles', #  查找静态资源路径
          'index' #  自己添加的app
      ]
  2. 资源文件配置:

    资源文件配置分为静态资源和媒体资源。静态资源的配置由配置属性STATIC_URL,STATICFILES_DIRS和STATIC_ROOT进行设置,媒体资源文件的配置方式由配置属性MEDIA_URL和MEDIA_ROOT决定。

    1. 资源路由(STATIC_URL):

      # Static files (CSS, JavaScript, Images)
      # https://docs.djangoproject.com/en/3.1/howto/static-files/
      STATIC_URL = '/static/'

      静态资源指网站中不会改变的文件。例如css,JavaScript,图片等文件。若资源路由STATIC_URL的值为/static/,则浏览器访问静态资源的网站必须为static,否则无法访问,且在调试模式下只能识别app目录下的static文件夹。

    2. 资源集合(STATICFILES_DIRS):

      STATICFILES_DIRS = [os.path.join(BASE_DIR, 'MYSTATIC1'),
                          os.path.join(BASE_DIR, 'MYSTATIC2'),]
    3. 资源部署(STATIC_ROOT):

      STATIC_ROOT = os.path.join(BASE_DIR, 'allStatic')

      STATIC_ROOT的作用是在服务器部署项目,实现服务器和项目之间的映射。STATIC_ROOT收集整个项目的静态资源并放在一个文件夹中,然后由该文件夹与服务器之间构建映射关系。当在调试模式时,Django会自动提供静态文件的代理服务,当进入生产环境时,需要设置STATIC_ROOT。

    4. 媒体资源(MEDIA):

      # 媒体路由地址信息
      MEDIA_URL = '/media/'
      # media文件夹的完整路径信息
      MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

      设置完成后还需要让Django找到配置信息:打开DjangoProject中的urls.py,为媒体文件夹添加路由地址。

      from django.contrib import admin
      from django.urls import path, re_path
      from django.views.static import serve
      from django.conf import settings
      
      urlpatterns = [
          path('admin/', admin.site.urls),
          re_path('media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}, name='media')
      ]
  3. 模板配置:

    模板是一种较特殊的HTML文档。文档中嵌入了一些django能够识别的变量和指令,然后由django的模板引擎解析这些变量和指令,生成完整的网页返回给用户浏览。

    # django默认的模板配置信息
    TEMPLATES = [
        {
            # BACKEND: 定义模板引擎,内置模板引擎有DjangoTemplates与jinja2.Jania2
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            
            # DIRS: 设置模板所在路径,默认为空
            'DIRS': [BASE_DIR / 'templates']
            
            # APP_DIRS: 是否在app里查找模板文件。
            'APP_DIRS': True,
            
            # OPTIONS: 用于填充RequestContext的上下文,一般不改。
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
  4. 数据库配置:

    django提供四种数据库引擎:MySQL,Oracle,sqlite3,postgresql。项目创建时默认使用sqlite3。

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }

    若想使用MySQL数据库,则应当安装mysqlclient库,并将上述代码改为

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django_db',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
    

    若想使用多个数据库,则应当将代码改为

    DATABASES = {
        # 第一个数据库
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django_db',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        },
        # 第二个数据库
        'Database1': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        },
        #第三个数据库
        'Database2': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': 'django_db2',
            'USER': 'root',
            'PASSWORD': 'root',
            'HOST': '127.0.0.1',
            'PORT': '1521',
        }
    }
  5. 中间件:

    中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。

    # django默认的中间件,一般不需要更改,能满足大部分开发需求
    MIDDLEWARE = [
        # 内置的安全机制,保护用户与网站间的通信安全。
        'django.middleware.security.SecurityMiddleware',
        # session会话功能
        'django.contrib.sessions.middleware.SessionMiddleware',
        # 处理请求信息
        'django.middleware.common.CommonMiddleware',
        # csrf防护功能
        'django.middleware.csrf.CsrfViewMiddleware',
        # 开启内置的用户认证系统
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        # 开启内置的信息提示功能
        'django.contrib.messages.middleware.MessageMiddleware',
        # 防止恶意程序单击劫持
        'django.middleware.clickjacking.XFrameOptionsMiddleware',

声明:Hello World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - DJANGO 配置文件


我的朋友,理论是灰色的,而生活之树是常青的!