前后端分离(model多对多)

摘要:
跨域问题:html文件通过浏览器打开,前端会显示localhost+端口,django后台是127.0.0.1+8000,ip和端口只要有一个匹配不上,浏览器就不允许访问,报跨域问题,解决跨域问题要pipinstalldjango-cors-headers前后端不分离:前端和后端都在一台服务器上,流程是发送请求-˃view-˃找到html模板-˃读取html(渲染页面)-˃返回整个html页面前后

跨域问题:
html文件通过浏览器打开,前端会显示localhost+端口,django后台是127.0.0.1+8000,ip和端口只要有一个匹配不上,浏览器就不允许访问,报跨域问题,解决跨域问题要pip install django-cors-headers

前后端不分离:

前端和后端都在一台服务器上,流程是发送请求->view->找到html模板->读取html(渲染页面)->返回整个html页面

前后端分离:

包含前端和后端两台服务器,前端服务器只放html、css,请求后端拿到接口返回的数据,渲染到页面上;后端服务器只有后端的东西,接口,接口返回json串

form表单发请求和js发请求的区别是form表单会刷新页面,js不需要刷新页面,有时没有必要刷新页面

创建一个子项目testcase,命令是D:my_love>python manage.py startapp testcase,点击回车,没有报错,生成的目录结构如下图:

前后端分离(model多对多)第1张

testcase和user是同级目录,在models.py里输入如下代码:

前后端分离(model多对多)第2张

前后端分离(model多对多)第3张

前后端分离(model多对多)第4张

Tools->Run manage.py Task...,弹出绿色的manage.py@my_love>,输入make就会弹出makemigrations,后面会有[appname],因为现在有两个app,一个是user,另一个是testcase,如果makemigrations后面不加,默认是全部,如下图所示:

前后端分离(model多对多)第5张

回车发现没有新表的create,要想生成新表必须在settings->INSTALLED_APPS里加上testcase或者testcase.apps.TestcaseConfig,如果Tools->Run manage.py Task...有报错的,还是用以前的方式进行,如果不加testcase.apps.TestcaseConfig,会出现如下的问题:

前后端分离(model多对多)第6张

加上testcase.apps.TestcaseConfig,再执行python manage.py makemigrations,显示如下图:

前后端分离(model多对多)第7张

再执行python manage.py migrate,显示如下图:

前后端分离(model多对多)第8张

刷新表,可以看到生成了case、case_set和case_case_set,如下图:

前后端分离(model多对多)第9张

case_set的字段和代码里的保持一致,表结构如下图:

前后端分离(model多对多)第10张

case的字段和代码里的保持一致,表结构如下图:

前后端分离(model多对多)第11张

case_case_set的表结构如下图:

前后端分离(model多对多)第12张

接下来实现用例集合的增删改查的接口:

在testcase目录下的views.py里输入如下图的代码:

前后端分离(model多对多)第13张

前后端分离(model多对多)第14张

如果子项目比较多,都在my_love下的urls.py里写路径,比较乱,所以在testcase目录下创建一个urls.py文件,从my_love下的urls.py文件里拷贝from django.urls import path到testcase下的urls.py文件,导入views.py文件,创建一个urlpatterns = [],然后配好路径,添加代码如下图:

前后端分离(model多对多)第15张

在my_love目录下的urls.py文件,新增代码如下图:

前后端分离(model多对多)第16张

path('testcase/', include(urls)),这个是testcase这个子项目里面的url,访问的是127.0.0.1:8000/testcase/add_case_set127.0.0.1:8000/testcase/query_case_set,如果是path('', include(urls)),访问的是127.0.0.1:8000/add_case_set127.0.0.1:8000/query_case_set,接下来在postman里实现添加用例集合的功能,配置如下图:

刚开始在postman里报403,然后在settings.py里注释MIDDLEWARE里的'django.middleware.csrf.CsrfViewMiddleware'就可以添加成功了

前后端分离(model多对多)第17张

接下来实现查询的功能,访问的路径是http://127.0.0.1:8000/testcase/query_case_set,点击回车可以看到如下图:

前后端分离(model多对多)第18张

添加和查询用例集合都ok了,但是还有更简便方法,用一个函数可以实现两个功能,路径也用一个,这是restful风格的开发方式,views.py里新增代码如下图:

前后端分离(model多对多)第19张

urls.py里的新增代码如下图:

前后端分离(model多对多)第20张

接下来在postman里把路径改成case_set_new,查询时也改成case_set_new路径,功能完全可以实现,同时在case_set表里可以看到新增的三条用例集合,如下图:

前后端分离(model多对多)第21张

现在用类的方式实现添加和查询用例集合,首先在views.py里导入from django.views import View,新增类的代码如下图:

前后端分离(model多对多)第22张

testcase下的urls.py文件里加入path('case_set_new', views.CaseSet.as_view()),类名.as_view()方法,访问的路径和上面的一样,增加和查询用例集合

接下来对表的字段进行一下修改,在models.py里Case这个类里的字段case_set增加null=True, blank=Truenull=True意思是数据库里的这个字段可以为空,如果不写blank=True在admin后台加数据的时候,case_set必须要选,要是不选页面过不去;blank=True,页面上不是必填项,给django admin用的,字段run_time也要增加null=True, blank=True

在Case表里有method_choice,这个字段是个变量,生成表结构时不会有这个字段,修改models.py的代码如下图:

前后端分离(model多对多)第23张

更改表结构后一定要执行python manage.pymakemigrations,点击回车,再执行python manage.py migrate,接下来在views.py里新增CaseView类,来实现添加和查询测试用例的代码:

前后端分离(model多对多)第24张

然后配置urls.py里的代码如下图:

前后端分离(model多对多)第25张

新增一条用例,在postman里面的配置如下图:

前后端分离(model多对多)第26张

添加成功后,再来实现查询测试用例的功能,访问http://127.0.0.1:8000/testcase/case,页面显示如下图:

前后端分离(model多对多)第27张

没有添加到用例集合里,所以case_set为空,把删除和修改的代码也列出来,新增代码如下图:

前后端分离(model多对多)第28张

在postman里删除的配置如下图:

前后端分离(model多对多)第29张

在查询一下,去表里看id=1的is_delete字段的值为1,因为代码是逻辑删除,只把is_delete的值从0改成了1,页面查询的时候也不会显示该条数据,如下图:

前后端分离(model多对多)第30张

免责声明:文章转载自《前后端分离(model多对多)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇实时监听移动端输入框的变化iReport5.6.0 linechart 制作方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Mock 基本使用

特殊的格式,例如IP,随机数,图片,地址,需要去收集二、mock优点1、前后端分离让前端工程师独立于后端进行开发。表示需要拦截的Ajax请求类型。表示数据模板,可以是对象或字符串。表示用于生成响应数据的函数。...

linux性能评估-磁盘io概念实战篇

看起来python是个可疑进程。avgqu-sz:平均I/O队列长度。%util:一秒中有百分之多少的时间用于I/O操作,即被io消耗的cpu百分比备注:如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果avgqu-sz比较大,也表示有当量io在等待。观察iostat的最后一列,你会看到,磁盘vda的I/O使...

oracle 在sql中显示blob的字符串

最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了。以上只是自己做了个简单的处理,相信肯定有更好的方法,希望大家帮忙,但是感觉dbms_lob函数下的方法真的很好用。...

说说接口封装

今天,我为同事封装了一个接口。当谈到接口封装时,有很多关于它的讨论。在很多情况下,说一个服务好,一个服务坏,实际上是在吐槽服务团队之外暴露的界面质量。无论哪种语言,抽象的封装接口都由一个函数名、几个参数和几个返回值组成。总之,参数不应该被封装……我们在内部尝试接口_Catch不会抛出异常,所有信息都将以错误代码的形式返回。就php而言,建议进行异常处理。...

PCL点云分割(2)

点云的分割是我想做的机器人手臂捕捉的一个非常重要的部分,因此首先要了解,如果我使用点云库来处理我用kinect获得的点云数据,这个例程也是由我自己慢慢修改程序并结合官方API的解释来实现的。如果我直接更改源程序,由于数据类型、头文件和其他原因,其中的许多细节可能无法编译,我们将很难找出错误。首先,让我们看看我自己设定的场景。然后我使用Kinect获取数据并观...

10 TCP限流技术

TCP流限制的原因是接收方可以完全接受消息,以确保数据安全而不会丢失。首先,窗口机制引入了发送方和接收方都有一个窗口。当发送方发送数据时,将发送落入窗口中的数据。当接收器接收到数据时,落入接收器窗口的数据将被接受。可以看出,流量会受到窗口大小II的限制。滑动窗口技术1TCP滑动窗口技术通过动态改变窗口大小来调整两台主机之间的数据传输。...