Django创建项目,setting的配置讲解,mysql数据库的配置, 数据库的迁移操作。

这篇博客介绍了如何搭建自己的第一个django项目, 并完善这个项目, 有不足之处还请谅解。 介绍如何创建一个项目, setting的配置讲解,和mysql数据库的配置以及数据库的迁移操作。

   工具:   pycharm2020
   <Django 从入门到 ‘放弃’ >  第二篇
   沙漏在下雨

本专栏介绍了我是怎么从Django入门到`放弃`, 基本的有,复杂的也有,项目我会自己花钱去上培训班分享给大家。一起学习吧! 这是我第一次出系列教程,不足之处,请多多指教, 一名大三备考研党!


创建第一个项目(project):

  • 使用命令行, 或者使用pycharm 下方的 terminal

在这里插入图片描述

  • 创建成功之后,打开文件树.

在这里插入图片描述

  • 先忽略nowapp 这个项目app , 创建好了 打开子文件夹 nowproject, 里面多了一些配置文件, 介绍如下:

    1) manage.py文件

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

    2) init.py文件

    二级子目录中的 init.py 文件用于标识当前所在的目录是一个 Python 包,如果在此文件中,通过 import 导入其他方法或者包会被 Django 自动识别。

    3) settings.py文件

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

    4) urls.py文件

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

    5) wsgi.py文件

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

    6) asgi.py文件

    asgi.py文件时django项目的asgi配置, 它将可调用的ASGI公开为名为“ application”的模块级变量。有关此文件的更多信息,请参见https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/

运行你的django项目:

在命令行里面输入如下指令:

py manage.py runserver

在这里插入图片描述

成功启动后,在该目录下会生成 Django 自带的数据库文件 db.sqlite3,这是 Django 默认自带的轻量级数据库,通过 http://127.0.0.1:8000 访问创建好的项目,8000 是 Django 的默认端口号。最后如若想退出运行状态,可以通过 CTRL+C 来终止。

点击这个域名链接,成功创建如下:

在这里插入图片描述

这就代表你已经创建好了项目,并且成功的运行了它, 这个时候,你会发现命令行也在不断的刷新条目, 这表示django一般都处于运行状态,这样在项目开发过程中就可以实时进行测试或者调试代码。

如果想运行在其他端口号:

py manage.py runserver 8080

或者运行在局域网的其他电脑中:
py manage.py runserver 0.0.0.0:8080


manage.py 文件命令:

在控制台中我们输入 py manage.py help 则会打印出来一些帮助信息:

这里面的命令后续会使用到一些, 不要求全部掌握。

Type 'manage.py help ' for help on a specific subcommand.

Available subcommands:

[auth]
    changepassword
    createsuperuser

[contenttypes]
    remove_stale_contenttypes

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver

[sessions]
    clearsessions

[staticfiles]
    collectstatic
    findstatic
    runserver

Setting 文件讲解配置:

setting 文件 是 Django 框架的重要配置文件,它定义的一些全局变量用来给 Django 框架传递参数,我们还可以根据自己的实际需求来修改这个文件从而实现某些特定的要求。下面我们对这个配置文件进行详细介绍,了解这个配置文件,是迈进 Django 世界的重要一步。

1) BASE_DIR

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

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

__file__是 Python 的语法,显示当前文件的位置,os.path.abspath(__file__) 方法返回当前文件的绝对路径。

2) SECRET_KEY

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

3) DEBUG

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

  • DEBUG = True用于在开发环境中使用,属于调试模式,在项目的运行过程中会暴露一些错误信息以方便调试。
  • DEBUG = False用于线上环境,表示不启用调试模式。

我们在编写代码的时候,设置为True 就可以了。

4) ALLOWED_HOSTS

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

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

提示:如果是在局域网,让其它主机也能访问此站点,应使用 ALLOWED_HOSTS=[’*’] 的方式。

5) INSTALLED_APPS

这个参数是指当前项目中用来安装的应用(APP)的列表,Django 把默认自带的应用放在这个列表里,比如 Admin 后台应用、Auth 用户管理系统等,前面我们也对这两个模块做了相应的介绍,在 Django 中把它们称之为“应用”。

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

比如我们这个项目中, 就要向里注册应用。

INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘你的应用’,
]

6) MIDDLEWARE

它用于注册中间件,Django 默认加载了一些中间件。例如,用于处理会话的 SessionMiddleware , 处理消息的MessageMiddleware等,同样我们可以对这些中间件进行添加或者注释。后面我们也可以编写自己的中间件扩展钩子函数, 用于扩展。

7) ROOT_URLCONF

ROOT_URLCONF = 'nowproject.urls'

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

8) TEMPLATES

它用于指定模板的配置信息,列表中每一元素都是一个字典。如下所示是 Django 默认自带模板引擎:

TEMPLATES = [
    {
    
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [], # 在这里我们可以设置自己的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',
            ],
        },
    },
]

9) WSGI_APPLICATION

WSGI_APPLICATION = 'BookStore.wsgi.application'

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

10) DATABASES

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

它用于指定数据库配置信息,这里默认配置的是 Django 自带的 sqllite3 数据库。Django 支持多种数据库,在这个字典变量中更改数据库配置。在后续章节我们将对 Mysql 数据库配置进行讲解。

11) AUTH_PASSWORD_VALIDATORS

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

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

12) LANGUAGE_CODE和TIME_ZONE

分别代表语言配置项和当前服务端时区的配置项,我们常用的配置如下所示:

  • LANGUAGE_CODE 取值是英文:‘en-us’ 或者中文:‘zh-Hans’;
  • TIME_ZONE 取值是世界时区 ‘UTC’ 或中国时区 ‘Asia/Shanghai’。

所以我们这里需要更改 TIME_ZONE 设置为中国时区(zh-Hans), 并且更改LANGUAGE_CODE 设置为 中文(Asia/Shanghai), 不然数据库存储时间会少8个小时, 因为是东八区。

13) USE_118N和USE_L10N

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

提示:USE_I18N = True 与 USE_L10N = True 其的 I18N 指的是国际化英文缩写,L10N 指的是本地化英文缩写。

14) USE_TZ=True

它指对时区的处理方式,当设置为 True 的时候,存储到数据库的时间是世界时间 ‘UTC’, 当设置了TIME_ZONE 则USE_TZ 则需要设置 == False .

15) STATIC_URL= ‘/static/’

它指的是静态资源的存放位置,静态资源包括 CSS、JS、Images。比如我们要在项目中添加一些图片,通常这些静态图片被存放在新建 (于app同级的目录下)的 static 目录下,这样就实现了通过 STATIC_URL= ‘/static/’ 路径对静态资源的访问, 这个后面我们会开一个章节讲解.


django配置mysql数据库:

首先确保你正确的安装了mysql数据库, 安装成功, 在你的数据库里面创建一个数据库。

create database django;

然后进入setting中的 DATABASES 里面按照如下设置:

DATABASES = {
    
    
    'default': {
    
    
        'ENGINE': 'django.db.backends.mysql',  # 指定使用的数据库引擎,可以通过 Django.db.backends 来查看哪些数据库可以与 Django 配合使用;
        'NAME': 'django',  # 数据库名字
        'USER': "root",  # mysql 用户名称
        'PASSWORD': '123123',  # 数据库的密码
        'HOST': "127.0.0.1",  # 数据库服务地址, 这里我们是测试开发 填本地地址 
        'PORT': 3306,   # mysql 对应的端口号 
        'default-character-set': "UTF8",  # 设置编码规则 utf8 
    }

}

然后需要安装 pymysql 这个库 pip install PyMySQL

最后在setting 同级的 __init__文件中 加入一段代码:

import pymysql 
pymysql.install_as_MySQLdb()

这样就完成了配置mysql数据库了, 我们创建的数据就会正确的保存到本地mysql文件中, 可以正确的查看。

数据库的迁移:

当我们创建好了一个project的时候,cmd会打印一些错误警告, 表示我们没有进行数据迁移, 迁移”就是把 Django 默认自带应用的数据表迁移到我们自己的创建的数据库里, 操作如下:

py manage.py migrate

运行之后,我们通过cmd打印MySQL信息可以得到:

在这里插入图片描述

​ 我们还需要使用一个命令, 因为如果现在的数据字段发生了变化, 那么我们得到的就是错误的表单了,

​ 使用命令

python manage.py makemigrations

1) makegrations生成数据库迁移文件

​ 当数据表更改后,我们首先执行 makemigrations 命令,然后 Django 会重新生成一个新的数据库迁移文件用来记录表结构之间的差异,命名规则是对上一个 迁移文件的序列号加1,如 0002_xxx、0003_xxx。

2) migrate执行数据库迁移命令

​ 之后,再次执行 migrate 命令让新的迁移文件生效并同步回数据库,从而完成表结构定义的修改。对于 Django 内置的应用,数据库迁移文件已经生成好了, 所以直接使用 migrate 命令即可。

3) 完成数据库迁移总结

​ 每一次数据表更改后,都需要执行下面的两个命令,它们的执行顺序如下所示:

​ python manage.py makemigrations
​ python manag.py migrate

这些都是我们新建一个modle 表单 之后就要执行的命令的, 预防忘记。

以上就是关于django 如何创建一个项目, setting的配置讲解,和数据库的配置以及数据库的迁移操作。

号加1,如 0002_xxx、0003_xxx。

2) migrate执行数据库迁移命令

​ 之后,再次执行 migrate 命令让新的迁移文件生效并同步回数据库,从而完成表结构定义的修改。对于 Django 内置的应用,数据库迁移文件已经生成好了, 所以直接使用 migrate 命令即可。

3) 完成数据库迁移总结

​ 每一次数据表更改后,都需要执行下面的两个命令,它们的执行顺序如下所示:

​ python manage.py makemigrations
​ python manag.py migrate

这些都是我们新建一个modle 表单 之后就要执行的命令的, 预防忘记。

以上就是关于django 如何创建一个项目, setting的配置讲解,和mysql数据库的配置以及数据库的迁移操作。

本专栏介绍了我是怎么从Django入门到放弃, 基本的有,复杂的也有,项目我会自己花钱去上培训班分享给大家。一起学习吧! 这是我第一次出系列教程,不足之处,请多多指教, 一名大三备考研党!

猜你喜欢

转载自blog.csdn.net/qq_45906219/article/details/109392318