Windows 10 - Django框架 学习总结 1

这里是总结 Django 框架的使用经验帖子,下面只是对开发 Django 框架的一个基础学习总结。

目录

  • 1. Django 框架简介
    • 1.1 Django 框架的承受能力
  • 2. 基础实操开发步骤演示
    • 2.1 开发工具准备阶段
    • 2.2 创建运行 Django 框架的虚拟环境
      • 2.2.1 用命令行安装 django 框架
      • 补充说明:pip 指令 与虚拟环境的 Scripts 目录
      • 补充说明:django-admin 指令 与 Scripts 目录
      • 2.2.2 具体 Django 框架安装可以看这链接
    • 2.3 如何创建 Django 项目
      • 2.3.1 Windows 命令行非虚拟环境下创建 Django 项目
      • 2.3.2 虚拟环境下创建 Django 项目
      • 2.3.3 补充说明:推荐使用命令行创建Django项目
      • 2.3.4 测试下虚拟环境导出依赖包
    • 2.4 运行Django Web 服务
      • 2.4.1 Windows 命令行运行
      • 2.4.2 Pycharm 运行 Django 项目
    • 2.5 理解 Django 项目的app 和 url 路由
      • 2.5.1 理解、删除、创建 Django 项目的 app
        • 2.5.1.1 理解 Django app、删除 app 等于删除文件夹
        • 2.5.1.2 创建 Django 项目的app
          • 2.5.1.2.1 Windows 命令行创建 app
          • 2.5.1.2.2 Pycharm 工具创建 app
      • 2.5.2 理解 Django 的 url 路由
        • 2.5.2.1 返回 页面内容 给浏览器
        • 2.5.2.2 url 路由 和 appname.view.py 的不解之缘
          • 2.5.2.2.1 添加路由记录
          • 2.5.2.2.2 总结 urls.py 和 views.py
          • 2.5.2.2.3 路由子表 urls.py 和 主路由表 urls.py
        • 2.5.2.3 总结 Django 的路由知识
    • 2.6 Django 的配置文件 setting.py
      • 后端个人理解
      • 初始化过程
      • 2.6.1 如何连接 MySQL 数据库及修改格式、时区配置
        • 2.6.1.1 连接 MySQL 数据库配置及数据库引擎的安装
          • 2.6.1.1.1 连接 MySQL 数据库配置
          • 2.6.1.1.2 数据库引擎的安装
        • 2.6.1.2 修改中文格式、时区的配置
      • 2.6.2 修改 Static 静态文件路径和 media 上传路径配置
    • 2.7 Django 框架重要命令 makemigrations、migrate、createsuperuser
  • 参考链接

测试环境:

操作系统: Window 10
工具:Pycharm

1. Django 框架简介

开源免费的Python语言的 Web应用开发框架,这是最出名的一个框架,第二出名的是 Flask 框架。

1.1 Django 框架的承受能力

基本上可以支持 5000 人同时在线的负载,所以不要以为 Python 语言的 Web 能力不行,当然也不要太过乐观。

2. 基础实操开发步骤演示

2.1 开发工具准备阶段

Pycharm Professional (专业版) 最新版本的都可以——破解的话,其实不用,网上存在一些好心人,有激活码免费提供,如果激活码不行的话,可能被人注册太多次了,失效了,就需要你花点时间去弄破解,当然听说破解版问题挺多的,就看你愿不愿意氪金了,专业版才自带有Django框架,不过这问题不大,其实只要有 Pycharm community (社区版的也可以),后面会有命令行创建 Django 的详解,而且我个人也比较推荐命令行创建,不然自动创建有时候,你都不知道帮你创了哪些东西给你。

2.2 创建运行 Django 框架的虚拟环境

Python 的虚拟环境有三个方案选择

  1. virtualenv
  2. conda
  3. Pipenv 不要用 Pipenv - 知乎劝退链接

conda 和 virtualenv 差不多,但我个人觉得比较好用的是 virtualenv ,这是一个虚拟环境文件夹,可以直接用来打包之类的,转移项目也方便很多。
Windows 10 - Django框架 学习总结 1_第1张图片
Windows 命令行创建 Python 虚拟环境 virtualenv 的指令:

python -m venv 你的项目简称名

这样就可以等下在虚拟环境内创建 Django 项目
注意这里的 hmsys 代指—— house management system

虚拟环境创建好了,一般只有下面 pip list 的这两个包,Django 框架还需要下载安装到虚拟环境内,当然如果是使用 Pycharm 创建的 Django 项目,那就直接帮你安装好了 Django 框架

Windows 10 - Django框架 学习总结 1_第2张图片

pip list

在这里插入图片描述

2.2.1 用命令行安装 django 框架

cd 虚拟环境下的 Scripts 目录下

这样才可以调用虚拟环境内的 pip 指令下载 django 框架

pip install django

Windows 10 - Django框架 学习总结 1_第3张图片

补充说明:pip 指令 与虚拟环境的 Scripts 目录

特别特别注意:如果要使用虚拟环境的 pip 指令,就一定一定必须要到相应的虚拟环境的 Scripts 目录下,用 pip 指令,否则你是不可能使用虚拟环境的 pip 指令的,因为你在别的目录下用的 pip 指令,是本机全局 python 语言运行环境下的 pip 指令,所以你用 pip 指令,如:pip install 安装包名 这样的指令是为本机安装的,而不是为虚拟环境安装的包。如果在没有解决全局 python 环境切换的 bug 问题,就不要因为 activate 激活了虚拟环境,就产生非虚拟环境下Scripts目录下pip 指令,是属于虚拟环境 virutalenv内的 pip 指令的错觉,

补充说明:django-admin 指令 与 Scripts 目录

了解一下就可以了,其实如果不是在 虚拟环境下的 Scirpts 目录,使用 django-admin.exe 指令,那么就是在调用本地的python环境下的 django-admin.exe 指令,但是呢,其实无论是调用本地,还是虚拟环境下的 django-admin.exe 起到的项目创建功能,是一样的,没区别的,不要被activate 指令给弄乱了,也不要因为我这一系列的解释,弄混了 本地的django-admin.exe 指令和虚拟环境内的 django-admin.exe 的作用是有区别的,

2.2.2 具体 Django 框架安装可以看这链接

Django 安装和搭建 virtualenv 虚拟环境(超详细完整步骤)

先说下,目前使用 Django 2.0 版本来开发项目居多,在这里得注意一下 Django 框架的版本,如果是 Django 3.0版本,我个人感觉 bug 比较多

说下安装和卸载的命令:

# 安装 Django 框架 2.0 版本
pip install django==2.0
# 卸载 Djanog 框架 2.0 版本
pip uninstall django==2.0

2.3 如何创建 Django 项目

Django 项目可以不创建虚拟环境,不在虚拟环境内创建 Django 项目,但是后期有点麻烦,所以这里演示一番怎么创建的,但是还是比较建议创建虚拟环境后,在虚拟环境内创建 Django 项目。

Windows:
这里是手动创建一个目录,然后在创建 django 项目,pycharm professional 可以自动创建的,不过一般而言,这里是需要先创建 Django 框架的 Python 虚拟环境,在使用这条命令创建 Django 项目的,个人强烈建议。

2.3.1 Windows 命令行非虚拟环境下创建 Django 项目

Windows 10 - Django框架 学习总结 1_第4张图片

mkdir 创建虚拟环境目录

cd 虚拟环境名

django-admin startproject 项目名

2.3.2 虚拟环境下创建 Django 项目

Pycharm profeesional 内可以直接创建,具体如下
Windows 10 - Django框架 学习总结 1_第5张图片
Windows 10 - Django框架 学习总结 1_第6张图片
结果如下所示,在虚拟环境下的 Script 目录下创建一个名为 Hmsys 的 Django 项目:
Windows 10 - Django框架 学习总结 1_第7张图片

2.3.3 补充说明:推荐使用命令行创建Django项目

关于在虚拟环境 virtualenv 内创建 Django 项目——可以不按照我的思路走,比如说在 虚拟环境下 hmsys内的 Script 目录下创建Django 项目,你都可以在虚拟环境的文件夹内,自己弄一个自己喜欢的文件放自己创建的 Django项目,下面演示一下我找的一个还不错的 Django 项目名和与虚拟环境名的取法,两者联合应用——虚拟环境使用 Django 项目的名字,Django 项目名字定为 config,这样后面直接打包整个虚拟环境就行了。
当然目前我是这样想的,有什么问题也可提出。

django-admin startproject 项目名称
例如 

D:\>cd D:\PythonProject\hmsys

D:\PythonProject\hmsys>django-admin startproject config

D:\PythonProject\hmsys>

Windows 10 - Django框架 学习总结 1_第8张图片
Windows 10 - Django框架 学习总结 1_第9张图片
这样给人的感觉很不错,项目名也没那么容易重复了,virtualenv 虚拟环境名就是项目名,config 配置文件,对项目进行配置,当然这里我只是对于我个人而言感觉较好的,做个笔记,可以自行选择,不必跟风。
Windows 10 - Django框架 学习总结 1_第10张图片
不经意间注意到这 Windows 命令行创建的好处,那就是每次我使用 Pycharm 创建 Django 项目后,想要删除 Django 项目,然后指定创建好的 virtualenv 虚拟环境的 Python 解释器,都会给我自行创建一个(1)(2)(3)…(n),所以这就很烦了,动用 Windows 命令行 创建就不会再出现这种糟糕情况,强迫症福音

推荐使用命令来创建 Django 项目:

django-admin startproject 项目名称

在 Pycharm 工具的设置 setting 里面点击 Python 解释器,选择虚拟环境下的解释器,点击 Apply 或 OK,就不会出现(1)(2)(3)…(n) 的这种情况了,因为不涉及创建 Django 项目,而是选择解释器而已。
Windows 10 - Django框架 学习总结 1_第11张图片

2.3.4 测试下虚拟环境导出依赖包

cd 到虚拟环境的 Script 目录下 activate 进入虚拟环境 hmsys
Windows 10 - Django框架 学习总结 1_第12张图片
导出所需的依赖包(第三方模块)

pip list > D:\PythonProject\hmsys\test.txt

pip freeze > D:\PythonProject\hmsys\requirements.txt

我觉得 pip list 比较好看点,推荐使用 pip list > txt文件绝对路径
Windows 10 - Django框架 学习总结 1_第13张图片

Windows 10 - Django框架 学习总结 1_第14张图片
退出虚拟环境 hmsys

deactivate

Windows 10 - Django框架 学习总结 1_第15张图片
虚拟环境 virtualenv 的创建、删除、退出、快速搭建开发环境链接

2.4 运行Django Web 服务

2.4.1 Windows 命令行运行

步骤
命令行先进入虚拟环境下,激活虚拟环境后再 cd 到 Django 项目下,运行此 Django Web 服务命令
如:

# 进入 hmsys 虚拟环境文件夹内的 Script 文件内,
# 里面存在一个 activate 运行文件
D:\>cd D:\PythonProject\hmsys\Scripts
# 激活虚拟环境 hmsys
activate
# config 是我的 Django 项目名
cd D:\PythonProject\hmsys\config

python manage.py runserver 0.0.0.0:80

在这里插入图片描述Windows 10 - Django框架 学习总结 1_第16张图片

启动 Web 服务命令后,在随意哪种浏览器的URL栏里输入 127.0.0.1

注意:因为这里设置的端口为 80 端口,那么只需要 127.0.0.1,如果设置的是如 8000 这样的端口,那么就需要输入 127.0.0.1:8000,否则无法正确显示,Pycharm 运行 Django 项目默认的是 8000 端口

正常显示结果如下所示:
Windows 10 - Django框架 学习总结 1_第17张图片
错误显示结果如下:
需要加端口
Windows 10 - Django框架 学习总结 1_第18张图片

2.4.2 Pycharm 运行 Django 项目

打开config项目,点击 开始运行 (绿色按钮)
运行后结果:点击蓝色的 127.0.0.1:8000,便会自动弹出浏览器,默认 Microsoft Edge 浏览器
Windows 10 - Django框架 学习总结 1_第19张图片
注意:如果想要用本机的 IP 地址(eg:192.168.1.1,这里可以配置网卡为静态 IP 地址)访问 Django,而不是 127.0.0.1 这样的,那么就需要在 settings.py 文件内找到 ALLOWED_HOSTS = [] 在方框内添加自己本机的 IP 地址,同理想要用 localhost 访问,也是一样,直接添加就可以了,端口不需要,默认自动加。
Windows 10 - Django框架 学习总结 1_第20张图片
补充说明:后面测试下,发现虽然一开始 Pycharm 是用 127.0.0.1:8000 ,默认配置启动 Web 服务,但是后面一旦改了ALLOWED_HOSTS = [] 的配置,就会完全按照这个配置来运行,所以需要加上一个 ‘127.0.0.1’ 否则报错
Windows 10 - Django框架 学习总结 1_第21张图片

2.5 理解 Django 项目的app 和 url 路由

2.5.1 理解、删除、创建 Django 项目的 app

2.5.1.1 理解 Django app、删除 app 等于删除文件夹

Django 中的一个app 就是项目里面的一个应用的意思。一个项目包含多个app
一个app 通常就是一个相对独立的模块 ,实现相对独立的功能。
比如,我们可以把 这个系统的 管理员管理的功能 做在一个名字为 usr 的 app 里面,把 销售人员的操作功能 实现在另外一个名字为
sales 的 app 里面。
一个app 本质上 就是一个 Python 文件夹, 里面包含了一些应用相关的代码文件。

所以删除 app,就等同于删除 app 这个文件夹,不必担心无法删除的情况

通俗点理解:app 在后端显示的是一个特定总的功能栏,能够放其他的一些操作的,比如我弄了一个功能栏,这个主要功能是给一个部门用的,因为这个系统是多个部门共用的,那么就会弄出几个 app 来分别给这几个部门用,比如有两个部门,就大概需要两个 app ,所以就规定了某个 app 功能是给特定部门用的,如销售部的用销售部指定的 app 功能,会计部的用会计部指定的 app 功能,这里会用到一个功能权限管理的操作,先提前说下。

当然,一个项目分成多少个app 这完全取决你的设计。 你把所有的功能都放入一个大app内也可以实现功能,只是这样做,这个app特别的臃肿。
这里说的臃肿类似把 销售人员的日常操作功能放到的会计部门的日常操作功能栏里,这样就很奇怪了,比如 app 叫 统计管理,统计管理里面分了几个子功能 客户报表分析、楼盘销售报表、银行按揭统计、财务统计报表,还有一个 app 叫 客户管理,子功能是 登记客户信息、客户消息、业务提醒、黑名单,那么如果将它们所有的子功能放在一个 app 如 客户管理 app 内,那么就很古怪了。

2.5.1.2 创建 Django 项目的app
2.5.1.2.1 Windows 命令行创建 app

进入项目根目录,执行下面的命令


python manage.py startapp 要创建的app名字

例如创建一个名为 sales 的 app
(hmsys) D:\PythonProject\hmsys\config>python manage.py startapp sales

Windows 10 - Django框架 学习总结 1_第22张图片
Windows 10 - Django框架 学习总结 1_第23张图片

2.5.1.2.2 Pycharm 工具创建 app

点击 Pycharm 的 Tools ,选择 Run manager.py Task… 会弹出一个命令终端出来,在里面输入

startapp 要创建的 app 名字

例如:
startapp sales

Windows 10 - Django框架 学习总结 1_第24张图片
这样就会创建一个目录名为 sales, 对应 一个名为 sales 的app,里面包含了如下自动生成的文件。

 sales/
           __init__.py
           admin.py
           apps.py
           migrations/
               __init__.py
           models.py
           tests.py
           views.py

这个目录其实就是一个python package
Windows 10 - Django框架 学习总结 1_第25张图片
里面有很多文件,后面会分别讲到它们的作用。

特别注意:无论是命令行 或 Pycharm 创建 app 时,在 settings.py 文件这里,都不会自动注册刚创建的 app,需要自己手动添加
如:
Windows 10 - Django框架 学习总结 1_第26张图片

2.5.2 理解 Django 的 url 路由

2.5.2.1 返回 页面内容 给浏览器

当浏览器地址栏中输入网址访问的时候,服务端是如何让浏览器呈现出网页内容的?
是这样的: 当我们输入网址,比如百度网址,比较敲回车后,浏览器会发出http请求给百度的服务器,百度服务器返回 HTML 文档内容给浏览器, 浏览器解析后,呈现出我们最终看到的网页内容。
服务器返回的 HTML 文档内容其实就是 符合 HTML 语法的 一段字符串 而已。
我们现在使用 Django 开发后端服务, 就可以响应浏览器的http请求, 返回一段HTML字符串, 浏览器就可以呈现在界面上了。
刚才我们创建的 sales 应用里面 有个 views.py 文件。 这个文件里面通常是写处理http 请求的代码的。

在这个文件内需要用到的 Django 的 http 模块
注意参数: request
如下例子所示:在 app 的 view.py 文件内创建 listorders() 函数

from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")
    

注意
这里面最终的返回结果是 HttpResponse 对象的参数字符串 ,也就是这句话

"下面是系统中所有的订单信息。。。"

listorders的参数 request 是 Django 中的 HttpRequest 对象,包含了HTTP请求中的信息

后端程序处理请求,常常要根据请求中的数据进行相应的处理:

比如请求添加一个用户,那么HTTP请求消息中就会携带要添加用户的信息(姓名、登录账号等)

我们写后端的代码,这些信息就在 HttpRequest对象中获取。
所以这个参数非常重要。
HttpRequest 对象的属性和用法,具体可以参考官方文档这里

光是定义了这样一个函数不行的,我们需要 告诉 Django :

当前端发送过来的HTTP请求 url地址 是 /sales/orders/ , 就由 views.py 里面的函数 listorders

来处理怎么告诉Django呢?

这就是 Django中的 url路由设置。

2.5.2.2 url 路由 和 appname.view.py 的不解之缘
2.5.2.2.1 添加路由记录

前面在创建项目目录的时候,在项目的设置目录下,有如下的一个urls.py 文件
Windows 10 - Django框架 学习总结 1_第27张图片
这个文件是 url 路由设置的入口文件

默认的 url 文件内容如下所示:
Windows 10 - Django框架 学习总结 1_第28张图片
要真正的使用路由,向浏览器(客户端),返回服务器(服务端)的HttpResponse 一个响应数据
例如在一个名为 sales 的 app 内的 views.py 文件内,创建如下listorders() 函数

# sales app ——> views.py
from django.http import HttpResponse

def listorders(request):
    return HttpResponse("下面是系统中所有的订单信息。。。")
    

Windows 10 - Django框架 学习总结 1_第29张图片

# config ——> urls.py 主路由
from django.contrib import admin
from django.urls import path

# 别忘了导入 listorders 函数
from sales.views import listorders

urlpatterns = [
    path('admin/', admin.site.urls),

    # 添加如下的路由记录
    path('sales/orders/', listorders),
]

Windows 10 - Django框架 学习总结 1_第30张图片

就是告诉 当前端过来的请求 url地址 是 /sales/orders/ (注意:最后的一个斜杠不能省略) , 就由 views.py 里面的函数 listorders 来处理。

所以,所谓 路由 就是指 : 根据 HTTP 请求的 url 路径, 设置 由哪个 函数来处理这个请求。
通常我们项目代码的修改, Django的测试服务可以自动检测到,并且重新加载,不需要我们重启 Django Web 服务。

如果大家想重新启动 Django web 服务, 大家可以在启动web服务的命令行窗口,按ctrl + break(也就是Pause按钮)先停止服务。 然后再次运行启动命令。
我们这时,就可以登录浏览器输入网址 http://127.0.0.1/sales/orders/ (注意:最后的一个斜杠不能省略)
回车后,就会出现如下内容

上面的引用,我倒是不怎么清楚,会不会自动加载,不过一般而言我是比较建议,代码改了,还是要重启下比较舒服些。

在用 Pycharm 启动 config 项目后,点击蓝色 127.0.0.1:8000 ,会弹出一个报错,这是因为没有设置一个路由的问题,直接在 浏览器的 url 栏内输入 127.0.0.1:8000/sales/orders/
注意端口,需不需要加
还有发现其实可以这样输入的 127.0.0.1:8000/sales/orders
因为浏览器会自动补全 / 斜杠的
Windows 10 - Django框架 学习总结 1_第31张图片

Windows 10 - Django框架 学习总结 1_第32张图片
正确结果如下所示:
Windows 10 - Django框架 学习总结 1_第33张图片

这就是浏览器的请求经过 Django路由后, 选择执行我们定义的函数 listorders,该函数 返回的字符串,
被作为http响应的消息体中的内容返回给 浏览器(客户端)了。

所以浏览器(客户端)最终显示的就是 我们 listorders 函数返回的字符串。

注意:

只要修改了路由表配置,添加了我们自己的路由记录,再去浏览器访问 首页,这里就是 http://127.0.0.1 ,前面曾经出现的小火箭欢迎页就不见了! 会出现一个 404 Not Found 的报错页面。
这是正常的,小火箭欢迎页面 是Django在调试模式下,发现路由记录没有添加的时候,缺省作为首页的。
一旦路由记录发生变动, 就会消失

2.5.2.2.2 总结 urls.py 和 views.py

urls.py 处理请求 requrest,views.py 返回请求处理结果 response。

2.5.2.2.3 路由子表 urls.py 和 主路由表 urls.py

url 路由表就是可以像上面这样,一个请求对应一个处理函数。
但是有的时候,我们的项目比较大的时候, 请求的 url 会特别多。

比如我们的系统提供给 客户、销售商、管理员 访问的 url 是不一样的,如下:

customer/
customer/orders/      

sales/
sales/orders/  

mgr/
mgr/customers/
mgr/medicines/
mgr/orders/

复杂的系统url条目多达几百甚至上千个, 放在一个主路由表 urls.py 文件内,查看时,要找一条路由记录就非常麻烦。

这时,我们通常可以将不同的路由记录 按照功能 分拆到不同的 url 路由子表 文件中。—— app 文件夹内创建一个新的 urls.py 文件

比如,这里我们可以把 访问 的 url 凡是 以 sales 开头的全部都 由 sales app目录下面的 子路由文件 urls.py
处理。

首先我们需要在 sales 目录下面创建一个新的文件 sales\urls.py 。

Pycharm 创建 urls.py 文件:右键点击 app 名字,选择 New ,Python File
Windows 10 - Django框架 学习总结 1_第34张图片
Windows 10 - Django框架 学习总结 1_第35张图片
Windows 10 - Django框架 学习总结 1_第36张图片

然后在这个 sales\urls.py 文件中输入如下内容

# sales ——> urls.py
# 导入 Django 的 urls 模块
from django.urls import path
# 先 sales.urls.py ——> 后 sales.views.py    
# . 代表 当前 app 文件夹内,导入 views.py 文件
from . import views

urlpatterns = [
    path('orders/', views.listorders),
]

然后,我们再修改主 url 路由文件 config/urls.py , 如下

# config ——> urls.py 主路由
from django.contrib import admin

# path 后导入一个include函数
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),

    # 凡是 url 以 sales/  开头的,
    # 都根据 sales.urls 里面的 sales app 的子路由表进行路由查询
    path('sales/', include('sales.urls')),

]

当一个http请求过来时, Django检查 url,比如这里是 sales/orders/,
先到主url路由文件 bysms/urls.py中查看 是否有匹配的路由项。如果有匹配 ( 这里匹配了 sales/ ), 并且匹配的对象 不是 函数, 而是 一个子路由设置 , 比如这里是 include(‘sales.urls’),就会去子路由文件中查看, 这里就是 sales.urls 对应的文件 sales\urls.py 。

注意这时,会从请求url中去掉 前面主路由文件 已经匹配上的部分
(这里是 sales/ 匹配到了则去掉), 将剩余的部分 (这里是 orders/)到子路由文件中—— sales.urls.py 查看是否有匹配的路由项。这里就匹配了 orders/ ,匹配的对象,这里是 views.listorders ,它是一个处理函数,就调用该函数处理该请求。
这个http请求, 将该函数的返回对象 构建 HTTP响应消息,返回给客户端。

2.5.2.3 总结 Django 的路由知识

我理解路由的重点在于:include() 和 函数,有 include 则 查询 对于 app 子路由文件 urls.py ,没有则执行指定的函数,处理请求

2.6 Django 的配置文件 setting.py

后端个人理解

后端开发的本质上就是在传输图片、声音、视频、文本等等的数据,将它们序列化(也就是转变成 二进制 或者 说是字节码,这里转化的过程应该是用到了 Unicode 编码来对这些数据进行一个序列化,Unicode 编码 也被叫做 UTF-8 编码,注意这里的 8 指的是 8 bit (比特) ),这样序列化且转换成 Unicode 编码,可以方便传输数据。
因此,对于这些数据,自然也就是由后端开发来进行数据管理操作——增(INSERT)、删(DELETE)、查(SELECT)、改(UPDATE)
特别要注意的是:图片、声音、视频这类数据比较特殊,所以一般都是统称为资源文件,会单独放在一个单独的目录文件夹内,数据库不会将它们放在数据库里面的,数据库通常都是存储文本类的数据——如资源文件的文件地址(图片、声音、视频文件),其他的文本数据。

初始化过程

下面删除了之前演示的名为 sales 的 app
Windows 10 - Django框架 学习总结 1_第37张图片
urls 路由删除

2.6.1 如何连接 MySQL 数据库及修改格式、时区配置

就目前来说,业界最广泛使用的数据库还是:关系型数据库。

关系型数据库系统,常用的开源数据库有 mysqlpostgresql

建议大家实际工作中使用的时候,使用上面这两种。

如果觉得用MySQL嫌麻烦的话,可以先看 Django框架默认数据库 sqlite 的相关教程:Django 默认的 sqlite 数据库

2.6.1.1 连接 MySQL 数据库配置及数据库引擎的安装
2.6.1.1.1 连接 MySQL 数据库配置

在文件内找到数据库配置,注释 sqlite 数据库默认配置 ,添加 MySQL 数据库的配置

# config.setting.py
# Database
# MySQL 数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 默认
        'NAME': 'hmsys',                # 连接的数据库名
        'USER': 'root',                 # mysql的用户名
        'PASSWORD': 'root@1234',        # mysql的密码
        'HOST': '127.0.0.1',            # mysql的ip地址
        'PORT': 3306,                   # mysql的端口
    }
}
2.6.1.1.2 数据库引擎的安装

虽然配置文件配置好了,但是要想成功使用 MySQL 数据库,就需要安装 MySQL 的数据库引擎 ENGINE,否则会报错。
这里需要使用命令行安装数据库引擎,用 Pycharm 安装挺麻烦的。
这里举例方便理解:进入我之前创建的虚拟环境 hmsys,输入如下命令:

pip3 install pymysql

Windows 10 - Django框架 学习总结 1_第38张图片
然后在 Django 项目下的 init.py 文件内加入如下内容:
目前的示例项目config

# config.__init__.py
"""
setting中的配置默认为sqlite3数据库 当需要修改成MySql时
并且在setting.py的同级目录的__init__.py 加入如下配置
否则会报错: Error loading MySQLdb module.
"""
import pymysql
pymysql.install_as_MySQLdb()

Windows 10 - Django框架 学习总结 1_第39张图片
参考链接:Django 的 MySQL 数据库配置教程

2.6.1.2 修改中文格式、时区的配置
# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

# 默认 英文 格式
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'  # 设置为中文格式

# 默认时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'   # 修改时区

USE_I18N = True

USE_L10N = True

# USE_TZ = True
USE_TZ = False    # 可以被自定义转换
# 在用 MySQL 做数据库,且django设置 USE_TZ=True 时,
# 会遇到一个问题,就是按月份或日期筛选 model 数据时只能得到空集

2.6.2 修改 Static 静态文件路径和 media 上传路径配置

链接:os.path.abspath用法

链接:关于 join 和 os.path.join 的理解

# 定义静态文件所在目录

STATIC_URL = '/static/'
# 报过错的位置 ##
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')
#			#
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), # 绝对路径/static/
)

# 定义上传图片文件所在目录
# 此为指定上传的图片路径前缀
MEDIA_URL = "/media/"
 # 绝对路径 /media/
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

报过的错:
ERRORS: ?: (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT settin

os.path.dirname用法

python中的os.path.dirname(file)的使用

静态文件配置参考链接

2.7 Django 框架重要命令 makemigrations、migrate、createsuperuser

makemigrations   # 先把 model 文件,建表的 SQL 语句整理出来 

migrate        # 之后连接数据库成功后,执行整理好的 SQL 语句

createsuperuser  # 创建超级管理员账户

理解 Django 的 makemigrations 和 migrate

Django创建超级管理员

在 Pycharm 里面点击红色框内选项,在下方弹出界面输入 此三个 命令,等同于 python manage.py 命令
Windows 10 - Django框架 学习总结 1_第40张图片
三条命令输入后:打开浏览器,在后面输入 admin/
就会弹出一个用户登录界面
Windows 10 - Django框架 学习总结 1_第41张图片
用户密码,就是 createsuperuser 时配置的账号和密码,密码随意,只要到时 y 就行了,邮箱随意。Windows 10 - Django框架 学习总结 1_第42张图片

结果如下:
Windows 10 - Django框架 学习总结 1_第43张图片
好了,Django 框架的基本使用方法,还有坑的总结就差不多这样了,后续会再补充下其他的。

                                            END         

参考链接

Django开发

你可能感兴趣的:(Django,python,开发语言,后端,django,mysql)