美文网首页
关于Django框架的一些学习笔记

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

作者: 脏脏的小泥娃 | 来源:发表于2020-03-08 15:54 被阅读0次

    疫情期间在家学习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, <NULL>)

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

    百度了一下是因为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框架的一些学习笔记

          本文链接:https://www.haomeiwen.com/subject/wgnqdhtx.html