2022年 11月 9日

Python创建项目文件夹作用及配置

1、创建项目及文件夹作用

(1)项目创建

在Pycharm页面,依次点击点击file > New Project…后,在如下弹出框中,先选择左侧的Django,然后选择右侧创建项目的位置及文件名,点击右下角Create创建即可。
在这里插入图片描述
如下展示的是创建成功后文件夹目录:
在这里插入图片描述

(2)文件夹作用

上图中各文件夹作用:

  1. 外层MyDjango:文件夹名字,可更改;
  2. 内层MyDjango:项目名字;
  3. 内层templates:放置项目的静态文件,如前端代码、项目图片等等;
  4. manage.py:命令行工具,使整个项目的启动文件;

其中内层文件夹MyDjango中有五个文件,作用如下:

  • Init.py:初始化文件,无需修改,是项目的初始化文件,有了这个文件标志当前文件夹是一个包,可以被引用;
  • asgi.py:ASGI(Asynchronous Server Gateway Interface)是 Django 团队提出的一种具有异步功能的 Python web 服务器网关接口协议。能够处理多种通用的协议类型,包括 HTTP,HTTP2 和 WebSocket。WSGI是基于 HTTP 协议模式的,不支持WebSocket,而ASGI的诞生则是为了解决 Python 常用的 WSGI 不支持当前 Web 开发中的一些新的协议标准(WebSocket、Http2 等)。同时,ASGI向下兼容WSGI标准,可以通过一些方法跑WSGI的应用程序。常用的「服务器」有Daphne、Uvicorn;
  • settings.py:项目配置文件,所有的Django的配置信息都在这里面,包括数据库的配置,静态文件的配置,还有django依赖的第三方扩展包;
  • urls.py:项目路由设置,可理解为网站的地址信息;
  • wsgi.py:全称Python Web Server Gateway Interface,是Python服务器网关接口,是Python应用与Web服务器之间的接口,用于Django项目在服务器上的部署和上线,一般不用修改。

(3)创建APP

每一个APP就是一个独立的模块,互相之间开发不受影响。

在Pycharm内的终端中输入命令
python manage.py startapp app名字
  • 1

如下图所示:
在这里插入图片描述
生成的新的目录结构会多一个app1文件夹,如下图所示:
在这里插入图片描述
app1为一个app的名字,里面各个文件作用如下:

  1. migrations文件夹:数据迁移包 , 负责迁移文件 , 生成数据库表数据 , 后期我们要使用他去结合models生成数据库表。
    python manage.py makemigrations:生成迁移文件
    python manage.py migrate:执行迁移文件
  2. init.py:初始化文件 同样也标志我们的app可以被引用;
  3. admin.py:后台管理系统 , 后期我们的可以通过他管理我们的model和数据库;
  4. app.py:Django的生成app名称的文件;
  5. models.py:模型文件 里面放的都是数据库表的映射;
  6. tests.py:测试文件;
  7. views.py:逻辑处理模块,视图函数文件。

2、配置

settings.py文件各个模块作用:

1.项目路径

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  • 1
  • 2

2.加密
主要用于重要数据的加密处理,提高系统安全性,是哈希值。主要用于用户密码、CSRF机制和会话Session等数据加密。

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '2^1$ticf0_*n5c+sk(2eaxsax#6@y*hd7ffsq#4(3il6b#)6a$'
  • 1
  • 2

3.调试模式
布尔类型,开发阶段应设置为True,在开发过程中自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。
项目部署阶段改为False,否则会泄露系统相关信息。

DEBUG = True
  • 1

4.设置可访问的域名
默认为空。当DEBUG为True且ALLOWED_HOSTS为空时,项目只允许以localhost或者127.0.0.1在浏览器上访问;当DEBUG为False时,ALLOWED_HOSTS 为必填项,否则无法启动,如果想允许所有域名访问,可设置ALLOWED_HOSTS = [’*’]

ALLOWED_HOSTS = []
  • 1

5.App列表
说明有哪些App,此时已有的admin、auth和session等
admin:内置后台管理系统;
auth:内置用户认证系统;
contenttypes:记录项目中所有model元数据(Django的ORM框架);
session:Session会话功能,用于标识当前网站的用户身份,记录相关用户信息;
messages:消息提示功能;
staticfiles:查找静态资源路径;
app1:添加的一个app。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ‘app1’
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6.中间件
中间件是介于request与response处理之间的一道处理过程,能在全局上改变django的输入与输出。
比如已经默认开启了csrf验证。csrf机制主要用于表单提交,防止窃取网站用户信息来制造恶意请求。

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',
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

7.根级url配置

ROOT_URLCONF = 'MyDjango.urls'
  • 1

8.静态文件

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        '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',
            ],
        },
    },
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

9.WSGI接口

WSGI_APPLICATION = 'MyDjango.wsgi.application'
  • 1

10.数据库设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

11.密码验证

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',
    },
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

12.语言、时区、

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

13.静态文件

STATIC_URL = '/static/'
  • 1

例如:

#单级目录静态文件
# STATICFILES_DIRS=(
# os.path.join(BASE_DIR,"statics"),
# )
#多级目录静态文件
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"blog","statics"),
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8