【Youtobe trydjango】Django2.2教程和React实战系列二【settings配置文件】

【Youtobe trydjango】Django2.2教程和React实战系列二【settings配置文件】

1. Django项目初始化过程

当我们python.exe manage.py启动django项目的时候,程序究竟做了什么呢?

来看一下E:\randolph\trydjango\src\trydjango\manage.py文件:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trydjango.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    print(sys.argv)
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

从main()函数入口,os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trydjango.settings')环境变量字典中添加一个叫做DJANGO_SETTINGS_MODULE的变量,内容是trydjango.settings,目的是将项目的配置文件送入环境变量中。

from django.core.management import execute_from_command_line然后导入execute_from_command_line函数,执行语句execute_from_command_line(sys.argv)
sys.argv参数是['E:\\randolph\\trydjango\\src\\trydjango\\manage.py', 'runserver', '--noreload']
execute_from_command_line函数做了什么事情呢?
如下,实例化一个ManagementUtility类为utility对象,将sys.argv送入形参argv,然后utility对象调用内部方法execute()

ManagementUtility类封装django-admin和manage.py实用程序的逻辑Encapsulate the logic of the django-admin and manage.py utilities.

def execute_from_command_line(argv=None):
    """Run a ManagementUtility."""
    utility = ManagementUtility(argv)
    utility.execute()

内部方法execute()做了什么呢?
Given the command-line arguments, figure out which subcommand is being run, create a parser appropriate to that command, and run it.
给定命令行参数,找出正在运行的子命令,创建适合该命令的解析器,然后运行它。
在各种参数获取和处理后可以看到运行了这样一句django.setup()
很明显,启动django项目命令,不过我没点进去,先到此为止吧。

2. 全貌

Django框架的全局配置文件的位置在E:\randolph\trydjango\src\trydjango\trydjango\settings

当创建django项目的时候,会自动根据项目名初始化这样一个django文件,在上面启动django项目的时候会将配置文件打入环境变量中即可取用。

"""
Django settings for trydjango project.

Generated by 'django-admin startproject' using Django 2.2.14.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# E:\randolph\trydjango\src\trydjango

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'hx^hzx@-l!r$kpj2av(_@o2vk8=q#(a2+=ry(2f^w3f53**zoe'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'trydjango.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        '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',
            ],
        },
    },
]

WSGI_APPLICATION = 'trydjango.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


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

STATIC_URL = '/static/'


3. 详细解释

  1. BASE_DIR
    常用的拼接方式,将项目的根目录的绝对路径拼接出来:
    E:\randolph\trydjango\src\trydjango

  2. SECRET_KEY
    安全key,长度固定,里面字符串随意修改下

  3. DEBUG
    是否debug模式

  4. ALLOWED_HOSTS

  5. INSTALLED_APPS
    app路径,新建的应用都要在这里添加,例如: ‘app1’

  6. MIDDLEWARE
    中间件

  7. ROOT_URLCONF

  8. TEMPLATES

  9. WSGI_APPLICATION
    wsgi配置

  10. DATABASES
    如果使用django的默认sqlite3数据库则不需要改,使用mysql例:
    需要安装并引入pymysql

DATABASES = {
 'default': {  
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'blog', #你的数据库名称 数据库需要自己提前建好
 'USER': 'root', #你的数据库用户名
 'PASSWORD': '', #你的数据库密码
 'HOST': '', #你的数据库主机,留空默认为localhost
 'PORT': '3306', #你的数据库端口
 }
}
  1. AUTH_PASSWORD_VALIDATORS

  2. LANGUAGE_CODE
    语言

  3. TIME_ZONE
    时区

  4. USE_I18N
    国家化

  5. USE_L10N

  6. USE_TZ

  7. STATIC_URL
    静态文件目录,需要添加一行

STATICFILES_DIRS=[
 os.path.join(BASE_DIR, "static"), 		# 具体路径
]

4. 增加其他配置

待定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值