暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

接口测试与开发实战(二)_Django基础

291

Django 基础讲解


django 3.2官方地址


https://docs.djangoproject.com/en/3.2/


基本介绍


Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。


使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。


MVC 优势:


  • 低耦合

  • 开发快捷

  • 部署方便

  • 可重用性高

  • 维护成本低

  • ...


Python 加 Django 是快速开发、设计、部署网站的最佳组合。


特点


  • 强大的数据库功能

  • 自带强大的后台功能

  • 优雅的网址


web应用设计模型之MVC 与 MTV模型


MVC 模型


MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。


MVC 以一种插件式的、松耦合的方式连接在一起。


  • 模型(M)- 编写程序应有的功能,负责业务对象与数据库的映射(ORM)。

  • 视图(V)- 图形界面,负责与用户的交互(页面)。

  • 控制器(C)- 负责转发请求,对请求进行处理。


简易图:



用户操作流程图:



MTV 模型


Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指:


  • M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。

  • T 表示模板 (Template):负责如何把页面(html)展示给用户。

  • V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。


除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model 和 Template,MTV 的响应模式如下所示:


简易图:



用户操作流程图:


解析:


用户通过浏览器向我们的服务器发起一个请求(request),这个请求会去访问视图函数:


  • a.如果不涉及到数据调用,那么这个时候视图函数直接返回一个模板也就是一个网页给用户。

  • b.如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。


视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。


下面我们来正式开始操作了


下载django 直接下载3.0以上的版本


去看看pypi有哪些版本

https://pypi.org/


最新版本是3.2.5


我们不需要下载最新的也不要下载较低版本的




点击进去查看历史版本




我们就直接现在3.2.4吧看你自己了


pip3 install django==3.2.4 #下载指定版本


下载完成后我们继续敲下django-admin




出现上面内容证明已经成功了、你也可以将django-admin进行配置环境变量、具体的路径在



你的python安装路径 + \Lib\site-packages\django\bin


Scripts目录下也有二选一



也可以不进行配置环境变量因为我们在Scripts目录下也能看到django-admin的话就不需要进行配置环境变量了


如果你在命令行中敲了django-admin提示没有该命令的时候你就需要进行配置环境变量


下面我们创建我们的第一个工程项目

django-admin startproject webTest



没有任何提示就是成功创建了





windows 下进入创建的目录里面


tree /f




  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。

  • webTest/asgi.py: 一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。

  • webTest/settings.py: 项目的全局常量配置、如数据库、前端模板配置等。

  • webTest/urls.py: 路由配置、视图与url的对应关系。

  • webTest/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。


接下来我们进入 webTest目录输入以下命令,启动服务器:


python manage.py runserver 0.0.0.0:8000





出现报错没有关系、这是一些数据库迁移的文件没有进行创建而已、后面我们在来解决这个问题


0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不指明,那么端口号默认为 8000。


在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址:127.0.0.1:8000) 及端口号,如果正常启动,输出结果如下:



出现上面的图片内容证明你的所有工作都是正常的。


创建app


project和app的关系:


app
django
项目的组成部分。一个app
代表项目中的一个模块,所有URL
请求的响应都是由app
来处理。比如豆瓣,里面有图书,电影,音乐,同城等许许多多的模块,如果站在django
的角度来看,图书,电影这些模块就是app
,图书,电影这些app
共同组成豆瓣这个项目。因此这里要有一个概念,django
项目由许多app
组成,一个app
可以被用到其他项目,django
也能拥有不同的app


python manage.py startapp 应用名






进入user目录后





│  admin.py  #后台配置模块
│  apps.py # app配置
│  models.py #数据库模型文件
│  tests.py # 单元测试模块
│  views.py #视图函数写在这里
│  __init__.py

└─migrations #数据迁移记录目录
        __init__.py

URL映射:


视图写完后,要与URL进行映射,也即用户在浏览器中输入什么url
的时候可以请求到这个视图函数。在用户输入了某个url
,请求到我们的网站的时候,django
会从项目的urls.py
文件中寻找对应的视图。在urls.py
文件中有一个urlpatterns
变量,以后django
就会从这个变量中读取所有的匹配规则。匹配规则需要使用django.urls.path
函数进行包裹,这个函数会根据传入的参数返回URLPattern
或者是URLResolver
的对象。


写完了视图函数后需要进行将url映射到我们对应的视图函数方法中、让django明白前端请求的资源去处理对应的方法。


示例代码如下:

from django.http import HttpResponse 

def test_list(request):
    return HttpResponse("Python全栈测试开发!")


from django.contrib import admin
from django.urls import path
from user.views import test_list #导入视图模块

urlpatterns = [
    path('admin/', admin.site.urls), #后台系统的url地址一般生产都会进行修改该路径为了安全起见
    path('test/', test_list),#直接输入对应的方法名称、无需带括号
]


上面的test/是对应前端浏览器url地址的 127.0.0.1:8000/test去浏览器输入下面url:



http://127.0.0.1:8000/test




会发现我们在视图模块中的字符串被渲染成了前端HTML内容了。


这是什么原理呢?这里我可以给大家简单讲解下面试经常被问到的,"在浏览器输入url后回车发生了什么"?


其实在写了上面的例子相信大家基本已经知道了一些原理了为什么要在url中的ip后面加上 ”/test 或者/login“这些东西了吧?


其实就是在我们输入/test后浏览器会进行一次tcp三次握手和四层挥手的细节、之后服务端通过后面的“/test”进行解析去后端django应用服务器中去找到与“/test”规则配置的方法并去执行该方法


1、我们首先是定义了一个函数为





2、再后我们返回了一个HttpResponse方法、即一个http请求的方法、该方法会自动向浏览器渲染python的字符串为html格式的文件给浏览器展示。


3、我们配置一个“/test”资源路径映射到了test_list方法中


4、后django通过“/test”、找到了test_list方法并执行了该方法内的代码、也就是HttpResponse方法


5、HttpResponse 该方法向前端浏览器输出了一个文本为“Python全栈测试开发!",所以前端浏览器显示的就是这么一串后端来的字符串也称之为数据。


大致的一个原理是这样的、具体的细节可以自行去了解


URL规则也很多的玩法如:


URL中添加参数:


有时候,url
中包含了一些参数需要动态调整。比如简书某篇文章的详情页的url,是https://www.jianshu.com/p/a5aab9c4978e
后面的a5aab9c4978e
就是这篇文章的id
,那么简书的文章详情页面的url就可以写成https://www.jianshu.com/p/<id>
,其中id就是文章的id。那么如何在django
中实现这种需求呢。这时候我们可以在path
函数中,使用尖括号的形式来定义一个参数。比如我现在想要获取一本书籍的详细信息,那么应该在url
中指定这个参数。示例代码如下:


from django.contrib import admin
from django.urls import path
from user.views import test_list,test_case #导入视图模块

urlpatterns = [
    path('admin/', admin.site.urls), #后台系统的url地址一般生产都会进行修改该路径为了安全起见
    path('test/', test_list),#直接输入对应的方法名称、无需带括号
    path('test/<name>/', test_case),
]




views.py
中的代码如下:


def test_case(request,name):
    text = "我叫 %s,一个测试前沿的布道者、立志成为一个全栈测试开发" % name
    return HttpResponse(text)




动态取值就是这样获取的、其实还有更多的玩法这里就不过多的讲解了、后面用到了再讲解吧。。。


由于django主要是开发些MTV模式(即前后端不分离架构)的web应用因此不在细节性的讲解其他内容、下面给大家演示Django 如何使用模板引擎去与HTML打交道。




拒绝白嫖,不给钱就点赞分享、关注、加在看吧!!!


文章转载自测试前沿布道者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论