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

  • 1. Django项目初始化过程
  • 2. 全貌
  • 3. 详细解释
  • 4. 增加其他配置

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 sysdef main():os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trydjango.settings')try:from django.core.management import execute_from_command_lineexcept 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 excprint(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 = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_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/#databasesDATABASES = {'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-validatorsAUTH_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 = TrueUSE_L10N = TrueUSE_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. 增加其他配置

待定

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

  1. 【Youtobe trydjango】Django2.2教程和React实战系列四【创建Django应用】

    [Youtobe trydjango]Django2.2教程和React实战系列四[创建Django应用] 1. 创建应用 2. 修改应用 1. 创建应用 打开cmd黑框,也可以用下列方法打开项目根目 ...

  2. 【Youtobe trydjango】Django2.2教程和React实战系列五【python shell操作models模型】

    [Youtobe trydjango]Django2.2教程和React实战系列五[python shell操作models模型] 1. 用python shell查询新增models对应的数据 2. ...

  3. 【Youtobe trydjango】Django2.2教程和React实战系列十【动态路由、app内部路由】

    [Youtobe trydjango]Django2.2教程和React实战系列十[动态路由.app内部路由] 1. 动态路由示例 1.1 动态路由 1.2 处理DoesNotExist不存在 2. ...

  4. 【Youtobe trydjango】Django2.2教程和React实战系列七【模板templates和Django模板引擎】

    [Youtobe trydjango]Django2.2教程和React实战系列七[模板templates和Django模板引擎] 1. 修改视图函数 2. 新建模板文件夹和html文件 3. 项目配 ...

  5. 【Youtobe trydjango】Django2.2教程和React实战系列六【自定义主页、路由与请求】

    [Youtobe trydjango]Django2.2教程和React实战系列六[自定义主页.路由与请求] 1. 初始化主页应用 2. 修改视图 3. 项目url增加主页路由 4. 路由 1. 初始 ...

  6. 【Youtobe trydjango】Django2.2教程和React实战系列一【项目简介 | 搭建 | 工具】

    [Youtobe trydjango]Django2.2教程和React实战系列一[项目简介 | 搭建 | 工具] 1.环境与选型说明 2.技术栈选型说明 3.django搭建详解 3.1. 项目虚拟 ...

  7. 【Youtobe trydjango】Django2.2教程和React实战系列三【Django超级管理员和内置内容】

    [Youtobe trydjango]Django2.2教程和React实战系列三[Django超级管理员和内置内容] 1. Django数据初始化及超级管理员 2. 用户模块使用 1. Django ...

  8. 【Youtobe trydjango】Django2.2教程和React实战系列八【渲染数据库数据与模板加载顺序探究】

    [Youtobe trydjango]Django2.2教程和React实战系列八[渲染数据库数据与模板加载顺序探究] 1. 准备数据 2. 渲染数据库数据到模板 3. 如何在app里加载django ...

  9. xen虚拟化实战系列(二)之xen虚拟机安装

    xen虚拟化实战系列文章列表 xen虚拟化实战系列(一)之xen虚拟化环境安装 xen虚拟化实战系列(二)之xen虚拟机安装 xen虚拟化实战系列(三)之xen虚拟机复制 xen虚拟化实战系列(四)之 ...

最新文章

  1. 如何查java当前负载_Linux查看机器负载
  2. 2019 好笔友-见字如面
  3. 用于大数据开发的Centos7操作系统安装过程中遇到的问题总结
  4. [Spring5]IOC容器_Bean管理注解方式_创建对象
  5. 【转】成为Java顶尖程序员 ,看这10本书就够了
  6. 2016OSC源创会年终盛典-架构与数据专场-杨亮
  7. Spring声明式事务管理示例——MyBatis学习笔记之十六
  8. 深度学习应用:入门篇(下)
  9. 别人的Python爬虫代码能读懂,自己却还是不能自由去爬?社群日报
  10. Linux学习笔记(一):Linux介绍
  11. 伍德里奇计量经济学导论第5版笔记和课后答案
  12. WPF:ListView 分页
  13. 彻底清除计算机磁盘上的病毒,电脑硬盘病毒无法彻底删除怎么办
  14. HTTP的几种请求方法
  15. ORACLE 中OVER()结合rank(),dense_rank(),rownumber() 使用方法
  16. 解决:Connections could not be acquired from the underlying database!(mysql)
  17. Android File System安卓文件系统(安卓存储分区,/data /storage /sdcard)
  18. Mysql(三)事务原理及分析
  19. 2018——测试与信仰
  20. python小实例一:简单爬虫

热门文章

  1. Windows/PC(win + R) 电脑常见操作命令50条
  2. 计算机网络第七版笔记--第三章
  3. 关于新生培训的心得体会
  4. mysql中视图与真实表的区别,数据库表/视图/同义词的区别
  5. 如何下载浪漫小清新结婚旅游相册PPT模板
  6. 战舰霸主服务器维护时间多长,《战舰霸主》删档开服活动公告 福利满满![图]...
  7. 最大异或对(Tire树)
  8. matlab绘制三维混沌系统程序(以三阶微分方程系统为例),可以出庞加莱截面图、二维相图、三维相图、分岔图
  9. qt使用c语言编程,QT使用C语言操作中文
  10. windows11 如何关闭防火墙