Django项目目录及项目文件介绍

Django项目目录及项目文件介绍

    • 创建项目
      • 项目目录说明
      • 项目文件说明
        • settings.py 文件
          • 1、BASE_DIR
          • 2、SECRET_KEY
          • 3、DEBUG
          • 4、ALLOWED_HOSTS
          • 5、INSTALLED_APPS
          • 6、MIDDLEWARE
          • 7、ROOT_URLCONF
          • 8、TEMPLATES
          • 9、WSGI_APPLICATION
          • 10、DATABASES
          • 11、AUTH_PASSWORD_VALIDATORS
          • 12、语言配置项
          • 13、时区配置项
          • 14、STATIC_URL
          • 15、DEFAULT_AUTO_FIELD
    • 创建应用
      • 应用目录说明
      • 应用文件说明
      • 应用的添加

创建项目

进入要创建项目的目录下,激活虚拟环境后,通过命令创建 Django项目

django-admin startproject 项目名

执行命令 django-admin startproject DjangoSite 创建了一个项目名为 DjangoSite 的Django项目

项目目录说明

|DjangoSite							项目根目录
├── DjangoSite						项目名称
│   ├── __init__.py					inti文件,标识当前所在的项目目录是一个 Python 包
│   ├── settings.py					项目配置文件
│   ├── urls.py						url路径文件
│   └── wsgi.py						WSGI服务器程序的入口文件
└── manage.py						命令行工具文件

项目文件说明

manage.py文件:项目根目录下的 manage.py 文件是管理 Django 项目的重要命令行工具,它主要用于启动项目、创建应用和完成数据库的迁移等。

__init__.py文件:DjangoSite根目录下DjangoSite的项目目录中,存在一个__init__.py文件,该文件用于标识当前所在的目录是一个 Python 包,如果在此文件中,通过 import 导入其他方法或者包会被 Django 自动识别

settings.py 文件:settings.py 文件是 Django 项目的重要配置文件。项目启动时,settings.py 配置文件会被自动调用,而它定义的一些全局为 Django 运行提供参数,在此配置文件中也可以自定义一些变量,用于全局作用域的数据传递。

url.py 文件:url.py 文件用于记录 Django 项目的 URL 映射关系,它属于项目的基础路由配置文件,路由系统是在这个文件中完成相应配置的,项目中的动态路径必须先经过该文件匹配,才能实现 Web 站点上资源的访问功能。

wsgi.py文件:wsgi.py 是 WSGI(Web Server Gateway Interface)服务器程序的入口文件,主要用于启动应用程序。它遵守 WSGI 协议并负责网络通讯部分的实现,只有在项目部署的时候才会用到它。

settings.py 文件

settings.py 文件是 Django 项目的重要配置文件,在Django项目的编程过程中,需要根据自己的实际需求来修改这个文件,从而实现某些特定的要求,所以需要对settings.py 文件的内容进行一个深入的解析并熟知里面的内容

1、BASE_DIR

用于绑定当前项目 BookStore 所在的绝对路径,项目中的所有的文件都需要依赖此路径

BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

os.path.abspath(__file__) 方法返回当前文件的绝对路径(也就是settings.py 文件的绝对路径);

os.path.dirname(os.path.abspath(__file__))则是将文件和目录进行剥离,返回文件所在的目录的绝对路径,也就是settings.py文件所在的DjangoSite项目目录的绝对路径;

再来一次os.path.dirname(),再剥离一层,返回的就是DjangoSite项目根目录所在的绝对路径

如果不理解,可以使用print(BASE_DIR)打印一下,对这行代码的理解就会更深刻

2、SECRET_KEY
SECRET_KEY = 't!i%=ct7x@j*7+*fm-%x@5s@$rcm8n(+r246jf6%=yf5(3$odn'

这个变量的本质是一个字符串,可以理解为是一个秘钥,它一般配合加密算法 Hash、MD5 一起使用。例如用户密码的加密或者建立会话时用到的 sessionid 都需要用到 SECRET_KEY 。在实际的开发工作中,一般将它保存在系统的环境变量中以确保加密的安全。

3、DEBUG
DEBUG = True

用于配置 Django 项目的启用模式,有两种取值方式:

  • DEBUG = True用于在开发环境中使用,属于调试模式,在项目的运行过程中会暴露一些错误信息以方便调试。
  • DEBUG = False用于生产环境,表示不启用调试模式。注意,项目发布时一定要改为DEBUG = False
4、ALLOWED_HOSTS
ALLOWED_HOSTS = []

用于配置能够访问当前站点的域名(IP地址),当 DEBUG = False 时,必须填写,有以下三种使用方法:

  • [],空列表,表示只有127.0.0.1,localhost能访问本项目;
  • [‘*’],表示任何网络地址都能访问到当前项目;
  • [‘192.168.1.3’, ‘192.168.2.134’] 表示只有当前两个主机能访问当前项目。

如果是在局域网,让其它主机也能访问此站点,应使用 ALLOWED_HOSTS=['*'] 的方式。比如本地用虚拟机跑项目,要用Windows系统访问;或者是前端同事要访问你电脑上的项目。

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

这个参数是指当前项目中用来安装的应用(APP)的列表。

Django 把默认自带的应用放在这个列表里,比如 Admin 后台应用、Auth 用户管理系统等,在 Django 中把它们称之为“应用”。

可以根据自己的项目需求对其进行增加或删除,比如公司要单独开发一个后台管理系统,就可以把第一项 admin 注释掉。开发时自己编写的应用都必须在这个变量表中进行注册才能生效。所以这个列表需要经常的改动。

6、MIDDLEWARE
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',
]

它用于注册中间件,Django 默认加载了一些中间件。例如,用于处理会话的 SessionMiddleware 等,同样我们可以对这些中间件进行添加或者注释。

7、ROOT_URLCONF
ROOT_URLCONF = 'BookStore.urls'

它指定了当前项目的根 URL,是 Django 路由系统的入口。

8、TEMPLATES

它用于指定模板的配置信息,列表中每一元素都是一个字典。

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',
            ],
        },
    },
]

BACKEND所示是 Django 默认自带模板引擎

9、WSGI_APPLICATION
WSGI_APPLICATION = 'DjangoSite.wsgi.application'

项目部署时,Django 的内置服务器将使用的 WSGI 应用程序对象的完整 Python 路径。

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

它用于指定数据库配置信息,这里默认配置的是 Django 自带的 sqllite3 数据库。Django 支持多种数据库,在这个字典变量中更改数据库配置。常用的数据库有MySQL、oracle

DATABASES 中的字典元素:

  • ENGINE:指定使用的数据库引擎,可以通过 Django.db.backends 来查看哪些数据库可以与 Django 配合使用;
  • NAME:指定项目所用的数据库名;
  • USER:数据库用户名;
  • PASSWORD:数据库的密码;
  • HOST:数据库服务器地址,本地环境开发为 127.0.0.1
  • PORT:数据库的端口号,如 MySQL 默认端口是 3306。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DjangoPro',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
11、AUTH_PASSWORD_VALIDATORS

这是一个支持插拔的密码验证器,且可以一次性配置多个,Django 通过这些内置组件来避免用户设置的密码等级不足的问题。

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',
    },
]
12、语言配置项
LANGUAGE_CODE = 'en-us'

LANGUAGE_CODE 指语言配置,en-us是英文 ,zh-Hans 则代表中文。

13、时区配置项
TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

TIME_ZONE 指服务端时区配置, UTC指的是世界时区,若需要配置为中国时区,则将值修改为Asia/Shanghai

项目开发完成后,可以选择向不同国家的用户提供服务,那么就需要支持国际化和本地化。USE_118NUSE_L10N 这两个变量值表示是否需要开启国际化和本地化功能。默认开启的状态。I18N 指的是国际化英文缩写,L10N 指的是本地化英文缩写。

USE_TZ 指对时区的处理方式,当设置为 True 的时候,存储到数据库的时间是世界时间 UTC

14、STATIC_URL
STATIC_URL = '/static/'

STATIC_URL 指的是静态资源的存放位置。静态资源包括 CSS、JS、Images这些前端的内容文件。比如我们要在项目中添加一些图片,通常这些静态图片被存放在 static 目录下,通过 STATIC_URL= '/static/' 路径对静态资源进行访问。

15、DEFAULT_AUTO_FIELD
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

DEFAULT_AUTO_FIELD 指的是主键配置。

当没有将模型字段设置为该模型的主键时,Django 会自动在项目的模型添加一个名为 id 的字段,该字段将用作主键。这个自动添加的键通常是 AutoField 。Django 允许通过设置 AutoField 来设置用于这些自动生成的主键字段的 DEFAULT_AUTO_FIELD 类型。

从 Django 3.2 开始,主键的默认类型设置为BigAutoField,这是一个64位整数(64 bit integer)。早期版本将隐式主键的类型设置为整数(integer)。如果没有在模型中设置主键,会弹出没有显式定义的主键类型的警告。

创建应用

Django 项目就是基于 Django 框架开发的 Web 应用,它包含了一组配置和多个应用,我们把应用称之为 App。一个 App 就是一个 Python 包,通常一个 App 可以包含模型、视图、模板和 URL 配置文件,可以被应用到多个 Django 项目中,因为它们的本质就是可被重用的 Python 软件包。

利用 manage.py 提供的 startapp 命令创建APP

python manage.py startapp 应用名称

执行 cd DjangoSite 命令进入所创建的DjangoSite项目根目录下,再执行python manage.py startapp demo命令创建了一个名为 demo的应用

应用目录说明

|DjangoSite							项目根目录
├── demo							应用名称
│   ├── migrations					数据模型迁移记录目录
│   │   └── __init__.py				inti文件,标识当前所在的数据模型迁移记录目录是一个 Python 包
│   ├── __init__.py					inti文件,标识当前所在的应用目录是一个 Python 包
│   ├── admin.py					Django Admin 应用的配置文件
│   ├── apps.py						应用程序本身的属性配置文件
│   ├── models.py					用于定义应用中所需要的数据表的配置文件
│   ├── tests.py					用于编写当前应用程序的单元测试的测试文件
│   └── views.py					用来定义视图处理函数的文件
├── DjangoSite						项目名称
│   ├── __init__.py					
│   ├── settings.py					
│   ├── urls.py						
│   └── wsgi.py						
└── manage.py						

应用文件说明

migrations 数据模型迁移记录目录:migrations 目录用于存储数据库迁移时生成的文件,该目录下的 __init__.py 文件标识 migrations 是一个 Python 包。

admin.py 文件:admin.py 用于将 Model 定义的数据表注册到管理后台,是 Django Admin 应用的配置文件;

apps.py 文件:apps.py 用于应用程序本身的属性配置文件;

models.py 文件:models.py 用于定义应用中所需要的数据表;

tests.py 文件:tests.py 用于编写当前应用程序的单元测试;

views.py 文件:views.py 用来定义视图处理函数的文件;

在实际的开发工作中,应用目录下的文件不是一成不变的,开发者根据自己的需要增加文件或者子目录,比如 urls.py 文件或者存储静态文件的 static 目录等

应用的添加

应用创建完成后,还需要在 settings.py 配置文件中对其进行添加,在上面settings.py文件中介绍了 INSTALLED_APPS参数,创建完应用,需要将应用添加到这个列表里,添加完成后,demo应用才算和整个项目融为一体

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo',     # 添加应用
]

你可能感兴趣的:(#,Python,Django,django,python,后端)