zoukankan      html  css  js  c++  java
  • Django 基础篇章

    Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含义:

    • M ,数据存取部分,由django数据库层处理。 
    • V ,选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理。
    • C ,根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数。

    由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),Django 也被称为 MTV 框架 。在 MTV 开发模式中:

    • M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
    • T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
    • V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

       
         MVC百度百科:全名Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

      通俗解释:一种文件的组织和管理形式!不要被缩写吓到了,这其实就是把不同类型的文件放到不同的目录下的一种方法,然后取了个高大上的名字。

                         当然,它带来的好处有很多,比如前后端分离,松耦合等等,就不详细说明了。       

      模型(model):定义数据库相关的内容,一般放在models.py文件中。

      视图(view):定义HTML等静态网页文件相关,也就是那些html、css、js等前端的东西。

      控制器(controller):定义业务逻辑相关,就是你的主要代码。  

      MTV: 有些WEB框架觉得MVC的字面意思很别扭,就给它改了一下。view不再是HTML相关,而是主业务逻辑了,相当于控制器。html被放在Templates中,称作模板,于是MVC就变成了MTV。这其实就是一个文字游戏,和MVC本质上是一样的,换了个名字和叫法而已,换汤不换药。



    Django项目实例

    1. 程序安装

      python3.5、pip3及pycharm专业版自行安装。pycharm不要使用免费版,它不支持Django。

     (1)安装Django: 

      这里只介绍较为简单的pip3命令安装方式。

      win+r,调出cmd,运行命令:pip3 install django,自动安装Pypi提供的最新版本。

     



     2、返回HTML文件。

      上面我们返回给用户浏览器的是什么?一个字符串!实际上这肯定不行,通常我们都是将html文件返回给用户。

      下面,我们写这么一个index.html文件:

      再修改一下views文件:


          为了让django知道我们的html文件在哪里,需要修改settings文件的相应内容。但默认情况下,它正好适用,你无需修改。

          接下来,我们可以重新启动web服务。在浏览器刷新一下,你会看到带有样式的“hello world”。

    注:这里有个小技巧,在多次频繁重启服务时,由于端口未释放的原因,容易启动不了服务,修改一下端口就OK了。

    3. 使用静态文件

      我们已经可以将html文件返还给用户了,但是还不够,前端三大块,html、css、js还有各种插件,它们齐全才是一个完整

    的页面。在django中,一般将静态文件放在static目录中。接下来,在mysite中新建个static 目录。

    你的CSS,JS和各种插件都可以放置在这个目录里。

    为了让django找到这个目录,依然需要对settings进行配置:


    同样,在index.html文件中,可以引入js文件了:

    重新启动web服务,刷新浏览器,查看结果。


    4. 接收用户发送的数据。

      上面,我们将一个要素齐全的html文件返还给了用户浏览器。但这还不够,因为web服务器和用户之间没有动态交互。

    下面我们设计一个表单,让用户输入用户名和密码,提交给index这个url,服务器将接收到这些数据。

      先修改index.html文件

    然后修改views.py文件

    此时 ,重启web服务时,会出错,因为django有一个跨站请求保护机制,我们在settings文件中将它关闭。

    再次进入浏览器,刷新页面:

    输入点东西,然后我们在pycharm中可以看到相应的数据。


    10. 返回动态页面

      

          我们收到了用户的数据,但返回给用户的依然是个静态页面,通常我们会根据用户的数据,进行处理后在返回给用户。

    这时候,django采用jinja2语言编写动态模板,jinja2会根据提供的数据,替换掉html中的相应部分,详细语法入门后再深入学习。

    先改造views.py文件:

    再改造index.html文件:

    重启服务,刷新浏览器:

    可以看到,我们获得了用户实时输入的数据,并将它实时展示在了用户页面上,这是个不错的交互过程。

    11. 使用数据库

      流程走到这里,django的MTV框架基本已经浮出水面了,只剩下最后的数据库部分了。

      上面我们虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。

      使用数据库是毫无疑问的,django通过自带的ORM框架操作数据库,并且自带轻量级的sqlite3数据库。下面我们来看一看:

      首先是注册app:

    不注册它,你的数据库就不知道该给哪个app创建表。

    然后我们在settings中,配置数据库相关的参数,如果使用自带的sqlite,不需要修改。

     

     再编辑models.py文件,也就是MTV中的M。

    这里我们创建了2个字段,分别保存用户的名字和密码。

    接下来要在pycharm的teminal中通过命令创建数据库的表了。有2条命令,分别是:

    python manage.py makemigrations

    再输入命令:python manage.py migrate

    修改views.py中的业务逻辑

    重启web服务后,刷新浏览器页面,之后和用户交互的数据都能保存到数据库中。任何时候都可以从数据库中读取数据,展示到页面上。

    至此,一个要素齐全,主体框架展示清晰的django项目完成了,其实很简单是不是?















    GitHub:https://github.com/ju-do-it
    个人博客:https://zhangju.lookdoc.cn
    博客园:https://www.cnblogs.com/zhangju
    Copyright ©2020 Ju-do-it
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    光场显微成像----整理
    清华大学自动化系友论坛——光电智能计算:笔记
    大创记录——Day3.12
    2.17UI bug修复
    beta阶段UI界面改进
    关于UI设计的心得体会-alpha和beta交界期间
    1.30进度
    2018.1.28进度更新
    心·迹 项目简介
    项目组成员介绍
  • 原文地址:https://www.cnblogs.com/zhangju/p/5836524.html
Copyright © 2011-2022 走看看