关于Django框架的一些学习笔记

疫情期间在家学习Django框架,期间遇到了不少的问题,以下是对Django框架学习的一些梳理。

Django框架采用MTV模式,是python的第三方库,M(Model)指模型、T(Template)指模板、V(View)指数据处理。

1、Django框架的安装

在Windows平台:运行cmd,执行pip install django命令就可以安装Django库


通过python -m django --version可以查看django的版本。

2、Django框架的开发步骤

Django框架的开发可以分为以下三步,

步骤一:创建一个工程,然后创建一个应用(APP)

步骤二:编写具体的功能

步骤三:运行服务器进行调试

其中步骤一和步骤三都是在cmd命令行下执行,步骤二编写具体的功能使用PyCharm进行编写,整个开发过程需要使用cmd命令行结合PyCharm

2.1 创建工程和应用

在cmd命令行下执行

django-admin startproject firstProject

,可以PyCharm可以看到刚刚新建的工程



2.2 创建app

通过cd命令进入工程目录 ,在工程目录下创建一个app,具体的功能编写都是在这个app中进行的

在cmd命令行下执行

python manage.py startapp newAPP

,创建一个APP


PyCharm下的工程目录更改:


2.3 具体功能的编写

一个工程目录下有这么多文件,具体的功能编写只需要关注以下几个文件


其中Model和View都已经有了我们还需要Template即模板,Template其实就是前台的网页(HTML、CSS、JS这些),Model对应的是后台数据库,View是中间的处理过程。

2.3.1添加Template

在app下选择新建文件夹,起名叫templates(约定俗成,也可以叫别的名字),前台的HTML网页都放在这个文件夹中。


然后打开setting.py文件,找到TEMPLATES,在DIRS下指定一下刚才的templates文件夹


其中第一个参数是固定的,第二个参数填写templates路径("工程名/templates")

2.3.2 创建模板(新建HTML网页)

在templates文件夹下新建一个HTML页面。页面中随便写点东西,这里假设写一个用户提交表单。其中第9行出现的 {% csrf_token %} 是Django框架自带一种加密方法,目的是防止你网站中的信息被盗用,所有表单中必须写这行代码。



2.3.3 对前台页面的数据处理

对数据的处理都是写在views.py文件中。这里定义了两个方法,第一个是用来在网页中显示模板,即将你的HTML页面显示出来。第二个方法是用来接受HTML页面中的数据并做出相应的处理。



2.3.4 创建本地路由

我们会发现在我的app中多了一个urls.py文件,这个是本地路由,生成app时并不自带需要自己创建。本地路由的作用是增加对views.py文件的指向,然后通过全局路由调用本地路由实现对views.py文件中的方法的调用。


2.3.5 调试

在cmd命令下,进入如manage.py 同级目录下执行如下命令,启动服务器。

python manage.py runserver

出现如图提示即启动服务器成功,将出现的IP地址复制到网页地址栏中即可查看自己的网站。

3、连接MySQL数据库(Django默认的是slqite3)

第一步:安装MySQL驱动,python3使用的是pymysql

在cmd命令下执行pip install pymysql即可安装MySQL驱动

第二步:配置setting.py文件,找到DATABASES


其中,ENGINE是数据库驱动,直接把原来的sqlite3改为mysql即可

NAME是数据库名

USER是数据库的操作用户,默认的是root

PASSWORD是数据库的密码

HOST是主机,填写‘localhost’或者‘127.0.0.1’都可以

PORT是端口号,默认3306

第三步:在setting.py文件同级目录下的__init__.py文件中添加两行代码

import pymysql

pymysql.install_as_MySQLdb()

经过亲自测试发现在python3.7+django3.0中不用添加

第四步:添加模型,在models.py文件中创建表


第五步:模型迁移,在cmd命令行下执行两条命令,由于我之前已经做过文件迁移,所以提示信息是这样的。(正确的可以参看这个链接:https://www.jianshu.com/p/6c320be944f2


2.5 操作过程遇到的问题


问题1:MySQLdb._exceptions.OperationalError: (2059, )

其中会遇到的问题是,在生成迁移文件时(第一条命令),有的会出现一个异常:MySQLdb._exceptions.OperationalError: (2059, )

百度了一下是因为mysql8.0密码加密的问题,MySQL8.0对用户的加密方式为caching_sha2_password,而django暂时不支持这种新增的加密方式,据说MySQL5.0不会出现这个问题。解决办法是在MySQL中执行以下两条命名:

alter user 'root'@'localhost' identified with mysql_native_password by 'yourpassword

flush privileges

然后重启django即可(原博文链接:https://www.cnblogs.com/yongqi-wang/p/agsgfs.html

问题2:No changes detected

还有一个问题就是图中提示的“No changes detected”,百度给出的解决办法时在setting.py文件中添加app的注册


然后再次执行模型迁移,结果是这样的


问题3:多出的数据表

根据输出我们会发现,除了我们创建的数据表之外,还有其他十几个迁移数据,他们来自哪里呢?根据百度出的答案,在INSTALLED_APPS中,其中列出的其他一些应用也带有迁移功能,迁移管理命令默认情况下会为所有已安装的应用迁移。你可能以为这样不好,实际上当第一次进行模型迁移时最好所有应用都迁移,以确保数据库包含必要功能所必须的表,例如用户身份验证和会话。(以上来自连接:https://www.jianshu.com/p/574d368ab28c

至此对整个数据库的连接就完成了,接着就可以写一些增删改查的功能啦。

4、增删改查功能


4.1添加用户

通过前台页面向数据库中提交数据,完成用户的添加。首先在templates文件夹下新建一个HTML页面


在views.py文件下完成数据的处理,编写添加用户的方法


完成本地路由和全局路由的关联。后面直接放最终完成的图片

4.2查询用户

假设通过地址访问完成用户的查询,这里以查询全部用户为例。编写views.py文件,方法如下:


完成本地路与全局路由的关联。

4.3修改用户

修改用户同上,直接放图:


4.4删除用户

删除用户同上,直接放图:



4.5.完成后的代码截图

templates下的文件(两个页面)


添加用户页

显示用户页

views.py文件


增删改查功能的具体实现

本地路由文件


关联views.py文件里的增删改查方法

全局路由文件


models.py文件


数据项与添加用户页的表单对应

settings.py文件(标记为修改的部分)




配置数据库

工程结构目录


你可能感兴趣的:(关于Django框架的一些学习笔记)