本文介绍: Django会重新生成一个新的数据库迁移文件记录结构之间的差异,命令规则是对上一个迁移文件序列号加1,如0002_xxxx、0003_xxxxfreeze列出当前虚拟环境安装依赖包及其版本号,它的输出格式requirements.txt文件内容格式完全一样,所以,可以将其输出进行重定向,得到依赖清单标识对于时区处理,如果设置为True,不论TIME_ZONE设置的是什么存储数据库中的时间都是UTC时间这个变量标记的是当前项目的根URL配置,是Django路由系统的入口点。

1.djangoadmin创建项目骨架

Django提供了django-admin这个功能强大的命令行管理工具,其中最重要的就是可以利用它来完成项目的创建

django-admin startproject djangoy

startprojectdjango-admin的子命令用于创建项目。这里使用这个子命令创建了djangoy项目

项目的骨架如下

在这里插入图片描述

启动django项目:

django manage.py runserver

看到如下界面代表一个初始的django项目创建成功:

在这里插入图片描述


2.settings.py文件配置解析

djangoadmin在创建项目的时候会生成settings.py文件,项目的所有配置都可以在这个文件完成。Django定义了一些默认的配置,后期可以根据应用需要进行修改,下面看一看默认生成的settings.py文件中都包含什么

项目路径

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

SECRET_KEY:

这个变量本质上是一个加密盐,用于对各种需要加密数据做Hash处理例如密码重置表单提交session数据

通常的做法是将它存储系统环境变量中,通过os.getenv(key,default=None)方式获取

SECRET_KEY = 'django-insecure-gf_ty$0g((purom8o0(c_v_ij&)yyyheihei!nqu3-42x'

DEBUG:

通常在开发环境中将它设置为True,项目在运行过程中会暴露出一些出错信息和配置信息以方便调试。但是在线上环境应该修改其为False,避免敏感信息泄露

DEBUG = True

ALLOWED_HOSTS:

用于配置可以访问当前站点域名,当DEBUG配置为False时,它是一个必填项,设置ALLOWED_HOSTS=['*']允许所有的域名访问

ALLOWED_HOSTS = []

INSTALLED_APPS:

这个参数配置的是当前项目需要加载的App包路径列表。Django默认会把admin管理后台)、auth权限系统)、sessions会话系统)加入进去,可以根据项目的需要对其增加或删除配置

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

MIDDLEWARE:

当前项目中需要加载中间件列表配置。与INSTALLED_APPS变量类似,Django也会默认加入一些中间件例如用于处理会话的SessionMiddleware、用于处理授权验证的AuthenticationMiddleware等。同样,可以根据项目的需要对其增加或删除配置

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:

这个变量标记的是当前项目的根URL配置,是Django路由系统的入口点

ROOT_URLCONF = 'djangoy.urls'

TEMPLATES:

这是一个列表变量用于项目的模板配置,列表中的每一个元素都是一个字典每个字典代表一个模板引擎

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

WSGI_APPLICATION:

Django的内置服务器使用的WSGI应用程序对象完整Python路径

WSGI_APPLICATION = 'djangoy.wsgi.application'

DATABASES:

这是一个字典变量标识项目的数据库配置

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

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

LANGUAGE_CODE和TIME_ZONE:

两个变量分别代表项目的语言环境时区

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N和USE_L10N:

Web服务搭建完成之后,可以面向不同国家的用户提供服务,这就要求应用支持国际化本地化。这两个布尔类型的变量标识当前的项目是否需要开启国际化本地功能

USE_I18N = True

USE_TZ:

标识对于时区处理,如果设置为True,不论TIME_ZONE设置的是什么存储数据库中的时间都是UTC时间

USE_TZ = True

STATIC_URL:

用于标记当前项目中静态资源存放位置

STATIC_URL = 'static/'

DEFAULT_AUTO_FIELD:

主键默认类型

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

3.修改项目的默认配置

配置语言环境时区

中国的项目,设置语言中文

LANGUAGE_CODE = 'zh-Hans'

设置为对时区敏感,这样就不用特殊处理存储数据库中的时间了:

TIME_ZONE = 'Asia/Shanghai'

USE_TZ = False

配置开发数据库

Django自带sqlite3不适合做应用项目的数据库,所以,这里用MySQL替代项目的默认数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 配置使用数据库引擎
        'NAME': 'django_test',  # 数据库名称
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'root',  # 数据库密码
        'HOST': '127.0.0.1',  # 数据库服务器地址这里使用本地开发环境
        'PORT': '3306',  # 数据服务器端口号,MySQL默认为3306
    }
}

4.初始化项目环境

INSTALLED_APPS中应用数据迁移

manage.py的migrate命令用于将应用模型定义修改同步数据库中migrate命令检查INSTALLED_APPS里配置的应用列表,依次迭代为每个应用创建所需要数据表

进入当前项目的虚拟环境

Django对于数据库的迁移工作通过两个命令实现

python manage.py makemigrations
python manage.py migrate

对于将来应用的每一次结构定义修改,都需要再次执行makemigrations命令,Django会重新生成一个新的数据迁移文件,记录结构之间的差异,命令规则是对上一个迁移文件的序列号加1,如0002_xxxx、0003_xxxx。之后,再次执行migrate命令让新的迁移文件生效完成结构定义修改

创建超级用户登录管理后台

manage.py提供了createsuperuser命令用于创建超级用户

python manage.py createsuperuser --username=admin --email=youremail@qq.com

当前命令执行后,需要重复输入两次密码(根据自己的需要设置),最终返回Superuser created successfully代表成功创建了超级用户

访问:http://127.0.0.1:8000/admin进入后台管理页面

在这里插入图片描述

创建应用

利用manage.py提供的startapp命令创建一个video应用的命令如下

python manage.py startapp video

执行命令成功后,会创建一个如下结构app文件夹

在这里插入图片描述

生成requirements.txt文件

若要给当前的项目生成requirements.txt文件,需要进入根目录执行命令

pip freeze > requirements.txt

freeze列出当前的虚拟环境安装依赖包及其版本号,它的输出格式requirements.txt文件内容格式完全一样,所以,可以将其输出进行重定向,得到依赖清单

asgiref==3.5.2
Django==3.2.16
mysqlclient==2.1.1
pytz==2022.4
sqlparse==0.4.3
tzdata==2022.4

将来,需要重建当前项目环境的时候,就可以执行命令

pip install -r requirements.txt  

原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/127259753

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33754.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注