• 一、Django基础


    1、MVC简介

      最初是由施乐公司旗下的帕罗奥多研究中心的一位研究人员给 smalltalk语言发明的一中软件设计模式。

      MVC的理念:分工。

      MVC的核心思想:解耦。

      1.1 Web MVC模型

        

        M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查等操作。

        V全拼为View,用于封装结果,生成页面展示的html内容。

        C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。

    2、Django简介

      Django的主要目的是简便、快速的开发数据库驱动的网站,它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。

      Django官网:https://www.djangoproject.com/

      Django源码:https://github.com/django/django

      Django官方文档:https://docs.djangoproject.com/zh-hans/3.0/

      Django框架遵循MVC设计,但有一个专有名词:MVT

      2.1 Django的MVT模型

      

        M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。

        V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。

        T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

        MVC和MVT之间的差异就在于黑线黑箭头标识出来的Template部分。

    3、环境搭建

      3.1 配置虚拟环境

        (1)安装虚拟环境:sudo apt install virtualenv  

        (2)安装虚拟环境扩展包:sudo apt install virtualenvwrapper,安装虚拟环境包装器的目的是使用更加简单的命令来管理虚拟环境。

        (3)修改用户家目录下的配置文件.bashrc,添加:

          export WORKON_HOME=$HOME/.virtualenvs

          source /usr/local/bin/virtualenvwrapper.sh

        (4)使用source .bashrc命令使配置文件失效

      3.2 创建虚拟环境

        (1)mkvirtualenv -p python3 虚拟环境名称

          

         (2)说明

          1)创建成功后,会自动工作在这个虚拟环境上

          2)工作在虚拟环境上,提示符最前面会出现"虚拟环境名称"

          3)所以的虚拟环境,都位于/home/username/下的隐藏目录.virtualenvs下。

            

      3.3 退出虚拟环境

        deactivate  #退出虚拟环境

      3.4 查看与使用

        查看所有虚拟环境的命令:workon 两次tab键

        使用虚拟环境的命令:workon 虚拟环境名称

      3.5 删除虚拟环境

        (1)确保退出虚拟环境:deactivate

        (2)删除:rmvitualenv 虚拟环境名

      3.5 包操作

        (1)通过pip命令安装包:pip install 包名称 

          sudo pip install 包名称这个命令会将包安装到真实主机上。

        (2)查看已安装的python包命令:

          pip list

          pip freeze

    4、创建项目

      Django中,项目的组织结构为一个项目包含多个应用,一个应用对应一个业务模块。

      4.1 创建Django运行的虚拟环境

        创建:mkvirtualenv py3_Django_env

        安装Django:pip install django==1.8.2

        运行:workon py3_Django_env

      4.2 在用户目录下建立文件夹存放文件

        cd ~/Desktop/demo/Django

      4.3 创建项目

        django-admin startproject 项目名称

        

        (1)manage.py是项目管理文件,通过它管理项目

        (2)在项目文件夹中,py3_django_test为与项目同名文件,放置配置信息

        (3)__init__.py是一个空文件,表示这个目录可以被当成包使用

        (4)settings.py是项目的整体配置文件

        (5)urls.py是项目的url配置文件

        (6)wsgi.py是项目与WSGI兼容的Web服务器入口

      4.4 创建应用

        使用一个应用开发一个业务模块

        # 创建应用名称为booktest,完成图书-英雄的信息维护

        python manage.py startapp booktest

        

        (1)__init__.py是一个空文件,表示当前目录booktest可以当作一个python包使用。

        (2)tests.py文件用于开发测试用例,在实际开发中会有专门的测试人员来使用。

        (3)models.py文件跟数据库操作相关

        (4)views.py文件跟接收浏览器请求,进行处理,返回页面相关

        (5)admin.py文件跟网站的后台管理相关

        (6)migrations文件夹存放模型操纵数据库后的迁移文件

      4.5 安装应用  

        应用创建成功后,需要安装才可以使用,也就是建立应用和项目之间的关联。

        在settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装。

        

       4.6 开发服务器

        在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用。

        运行服务器命令:python manage.py runserver ip:port

        说明:(1)可以不写ip和端口,默认ip是127.0.0.1,默认端口为8000。

           (2)通过浏览器访问

        

            (3)如果增加、修改、删除文件,服务器会自动重启,按ctrl+c停止服务器。

    5、模型设计(models.py)

      django中内嵌了ORM框架,不需要直接面向数据库编程,而是定义模型类,通过模型类和对象完成数据表的增删改查操作。

      使用django进行数据库开发的步骤如下:

      (1)在models.py中定义模型类

      (2)迁移

      (3)通过类和对象完成数据增删改查操作

      5.1 ORM框架

        O是object,即类对象;R是relation,关系数据库中数据表;M是mapping,映射。

        在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据

        ORM框架可以根据我们设计的类自动帮我们生成数据库中的表格,略去自己建表的过程。

      5.2 定义模型类

        模型类定义在models.py文件中,继承自models.Model类。

        说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长。

        5.2.1 设计图书类

          (1)类名:BookInfo

          (2)图书名称:btitle

          (3)图书发布日期:bpub_date

        5.2.2 模型类的设计

        

         5.2.3 迁移

          迁移由两步完成:

          (1)生成迁移文件:根据模型类生成创建表的迁移文件

          (2)执行迁移:根据生成的迁移文件在数据库中创建表

          生成迁移文件命令:python manage.py makemigrations

          

           执行生成迁移文件命令后,会在应用booktest目录下的migrations目录中生成迁移文件。

          

           Django框架根据设计的模型类生成了迁移文件,在迁移文件中可以看到fields列表中每一个元素跟BookInfo类属性名以及属性的类型是一致的。其中id项是Django框架帮我们自动生成的,在创建表的时候id就会作为对应表的主键列,并且主键列自动增长。

          执行迁移命令:python manage.py migrate

          

           当执行迁移命令后,Django框架会读取迁移文件自动帮我们在数据库中生成对应的表格。

          

           Django默认采用sqlite3数据库,上图中的db.sqlit3就是Django框架帮我们自动生成的数据库文件。

          安装sqlitebrowser查看db.sqlite3文件:sudo apt-get install sqliteborwser

          在终端中启动:spliteborwser

          spliteborwser界面如下:

          

           打开db.sqlite3文件

          

          

          上面生成的表的名字叫做booktest_bookinfo,其中booktest是应用的名字,bookinfo是模型类的名字。

          数据表的默认名称为:<app_name>_<model_name>

      5.3 设计英雄类

        5.3.1 英雄类

          (1)类名:HeroInfo

          (2)英雄姓名:hname

          (3)英雄性别:hgender

          (4)英雄简介:hcomment

          (5)英雄所属图书:hbook

          (6)图书-英雄的关系为一对多

          

           生成迁移文件并执行:

          

          BookInfo和HeroInfo类之间具有一对多的关系,一对多的关系应该定义在多的哪个类HeroInfo类中。

          hbook=models.ForeignKey('BookInfo')这句代码让BookInfo类和HeroInfo类之间建立了一对多的关系。

          其中booktest_heroInfo表中的hbook_id字段是根据HeroInfo类的关系属性hbook生成的,对应着图书表中的主键id。

      5.4 数据操作

        完成数据表的迁移之后,可以通过进入项目的shell,进行简单的API操作。

        进入项目shell的命令:python manage.py shell

        退出:ctrl+d或输入quit()

        

         对象的关联操作

        

        

     6、后台管理

      Django能够根据定义的模型类自动地生成管理页面

      使用Django的管理模块,需要按照如下步骤操作:

      (1)管理界面本地化

      (2)创建管理员

      (3)注册模型类

      (4)自定义管理页面

      6.1 管理界面本地化

        本地化是将显示的语言、时间等使用本地的。即中国大陆地区使用简体中文,时区使用亚洲/上海。

        打开settings.py文件,找到语言编码、时区的设置项,更改内容:

        

       6.2 创建管理员

        创建管理员的命令:python manage.py createsuperuser

        按提示输入用户名、邮箱、密码

        接下来启动服务器:python manage.py runserver

        

         打开浏览器,在地址栏中输入如下地址后回车

        

         输入前面创建的用户名、密码完成登录

      6.3 注册模型类

        登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行增删改查操作。

        

        

      6.4 自定义管理页面

        Django提供了自定义管理页面的功能,比如列表页要显示哪些值。

        在admin.py中,自定义类,继承自admin.ModelAdmin类:

        

         

     7、视图

      对于django的设计框架MVT,用户在URL中请求的是视图,视图接收请求后进行处理,并将处理的结果返回给请求者。

      使用视图时需要进行两步操作:

      (1)定义视图函数

      (2)配置URLconf

      7.1 定义视图

        视图是一个python函数,被定义在views.py中。

        视图必须有一个参数request,必须返回HttpResponse对象,HttpResponse中的参数内容会显示在浏览器的页面上。

        

      7.2 配置URLconf

        请求者在浏览器地址栏中输入url,请求到网站后,获取url信息,然后与编写好的URLconf逐条匹配,如果匹配成功则调用对应的视图函数,如果所有的URLconf都没有匹配成功,则返回404错误。

        一条URLconf包括url规则、视图两部分

        (1)url规则使用正则表达式定义。

        (2)视图就是在views.py中定义的视图函数。

        需要两步完成URLconf配置:

        (1)在应用中定义URLconf

        (2)包含到项目的URLconf中

        7.2.1 在应用下创建urls.py文件,并将视图链接到url请求:

          

        7.2.2 将应用中的urls.py包含到总设置中的urls.py中,让其匹配后可以跳转:

          

      7.3 请求访问

        视图和URLconf都定义好了,接下来在浏览器中输入对应的url请求:

        http://127.0.0.1:8000/index/

        

    8、 模板

      在Django中,将前端的内容定义在模板中,然后再把模板交给视图调用。

      8.1 创建模板

        在项目中建立和应用booktest同级的目录templates,并创建下级目录booktest存放app中使用的静态文件

        

      8.2 设置查找模板的路径

        在settings.py文件中,设置TEMPLATES的DIRS值

        

      8.3 定义模板

        

         在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的:{ { 变量名 } }

        在模板中编写代码段语法如下:{ % 代码段 % }

      8.4 视图调用模板

        调用模板分为三个步骤:

        (1)找到模板

        (2)定义上下文

        (3)渲染模板

        

         浏览器效果:

        

       8.5 视图调用模板简写

        视图调用模板都要执行以上三部分,于是Django提供了一个函数render封装了以上代码。

        方法render包含3个参数:

        (1)第一个参数为request对象

        (2)第二个参数为模板文件路径

        (3)第三个参数为字典,表示向模板中传递的上下文数据

        

         

       

    9、实践项目

      9.1 定义视图

       

       9.2 配置url

        

       9.3 定义模板

        

        

        

  • 相关阅读:
    软件杯学习:python爬虫爬取新浪新闻并保存为csv格式
    操作系统实验1:时间片轮转和存储管理动态分区分配及回收
    软件测试
    实验6-使用TensorFlow完成线性回归
    实验一
    pycharm中设置anaconda环境
    架构之美读书笔记一
    2.1学习总结:决策树分类器
    python自学日记一
    爱甩卖网站正式上线啦
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12745505.html
Copyright © 2020-2023  润新知