数据工厂平台-6:继续VUE和DJANGO的踩坑

简介: 数据工厂平台-6:继续VUE和DJANGO的踩坑

最近终于倒出时间来继续更新这个系列了。

   这里给大家说下这个系列的特点:


   用的是Django和VUE技术。 正常来说,vue并不支持DJANGO,它和DJANGO的冲突很多也很麻烦,甚至python2的话会有无解的问题出现。


   所以你看到的很多教程,都是用的vue-cli来配合DJANGO或者其他框架进行WEB开发。


   那么vue-cli又是什么呢?它是VUE自己的前端开发框架,相当于一个完整的前端,和django配合的时候呢,是必须要前后端分离的,vue-cli专注于前端,django专注于后端。

   但是vue-cli的上手难度要高于vue.js,甚至官网教程一开头就明确到告诉你,新手建议不要用vue-cli。

   

   但是如果不用vue-cli,那就只能用vue.js,也就是在html模板页面内引入vue.js,来实现dom和bom的数据交互。


   结果这种没有分离的架构,因为和django有太多的冲突问题几乎没人能用的起来,这也就逼着大家不惜提高开发,人力,稳定性,物理资源等成本去写一个前后端分离的大型平台来做一些小事。


   不过这种没什么亮点,也没什么意思。教程随处都搜的到。我既然想花费巨大精力和时间代价来更新这个系列,就是准备趟平所有django和vue的冲突,实现一个二者完美的融合平台。它有着开发快,维护简单,理解容易等优点。

   

   抛开前端的数据框架和项目架构,来从产品上考虑下数据工厂的实现:

有俩种方案:

  1. 你作为主要实现者,作为唯一测试开发,接收各种需求,来快速实现这种造数据的功能
  2. 你作为测试架构,服务于全体测开和测试。不再接收需求,而是创造一个低代码平台,让其他人根据自己的业务需求简单的 无代码的 去开发所需的工具。


   显然第二种的级别更高,后续维护也更简单。但是这需要更强的设计和技术思维,甚至代码的质量要求都会非常高,读者受众也会小很多。所以本系列我们选择第一种,比较传统,但可以吃遍各种场合的 方案。


  (而第二种属于进阶设计,我会在我的培训小班中当做教程题材来进行讲解,这种高端定制化的培训是需要提前预约和报名的,第一期很抱歉限制了人数,导致近百人没有报名成功,二期的话也不打算涨价了,大家量力而氪吧。)



       好了废话不多说,我们回归主题,继续开发。之前我们成功引入了VUE.JS在home页面,解决了几个和Django的冲突问题。


我打开了项目运行后:

image.png

这里先来小小的优化一下:

打开urls.py 添加这行,为空时候也一样跳转到首页home。

image.png

再访问就成功进来了:

image.png

然后这里我们回顾下我们的home.html:

image.png

注意红线部分代码。


这里我们用[[ ]] 来代替原始的{{ }} 来避免 dom层获取数据的时候,从后台直接拿,而不是从vue函数里拿。


当然还有其他解决办法,比如给dom的div前后 用 {% verbatim %} {% endverbatim %} 包裹起来,一样会起到这个效果,就是麻烦一点而已。


这里大家也可以发现一个真理,解决问题的答案永远不止一种。


当然还有一个吐槽:就是出现了错误或者不生效的时候,vue的高度封装让我很难去定位问题原因和自己动手想办法解决问题,而只能通过百度的方式去查这些固定写法语法。这样虽然看似简单,但是也给我们带来一种极不安全的感觉,万一搜不到解决方案呢?万一作者也没更新解决办法呢?是不是这就没办法了?  所以,这也是为什么某些js高手 不喜欢用vue的原因,毕竟上限被别人卡死的感觉很不好。就好像一个会自己组装相机摄影的高玩,不喜欢用傻瓜相机一样。一个Photoshop的高手不喜欢用抖音自带的美颜瘦脸一样


   好了,吐槽完毕。毕竟越简单的东西 推广越快,受众越多。认可度也高。最重要的是:它很适合我们测试人员使用,我们本来就不该去把大量精力放在js这种高难度的脚本语法里,我们应该把精力省出来留在宝贵的设计和后台和整体架构上。

   

  截止到现在, 我们成功让views.py从数据库拿出数据 传递给前端的vue,vue又成功把数据显示到了Dom层 也就显示在了浏览器上。


   现在我们来引进一个bootstrap3的顶部菜单。

具体的做法,我们同样用线程的,本教程和接口测试平台系列教程 最大的不同点就是 本教程力求最快 最简单的方式,绝对不造轮子。


   所以为了引入这个菜单,我们可以很简单的去 JQUERY上找个第三方菜单来使用。


   注意,为了后续各个页面都可以简单的用这个菜单,所以我们要把菜单单独放在一个HTML模板中,然后其他页面引入即可~


   打开:http://www.htmleaf.com/jQuery/Menu-Navigation/

image.png

找到这个左侧菜单,很漂亮的左侧菜单:

http://www.htmleaf.com/jQuery/Menu-Navigation/201509152576.html

点击下载插件:

image.png

下载后,解压,放到我们项目的static文件夹下:

image.png

然后我们打开它的index.html,也就是它的例子模板:


点击右上角的谷歌浏览器按钮:

image.png

意思是在浏览器中打开这个文件:

image.png

可以看到是可以成功展示这个左侧菜单的,注意此时的url是本地打开文件的,并不是通过平台host:8000进去的,所以我们一会要想从平台域名+路由进去,那么需要改这个文件内的很多导入其他文件的 相对路径。


现在我们要把这个index文件,整个拖拽到我们下面的templates文件夹,拖拽成功后,这个html文件就相当于是被我们平台正式征用了。

image.png

然后注意给它改个名字,改成menu.html,意思是它就是个菜单html模板。

image.png


现在我们将要对其进行 导入文件的路径修正了,注意,除非是外链引进的,否则全部改为/static/开头的路径,不要问为什么,这是django的规定~


也不要去写什么相对 绝对路径,没意义。django只会从固定的几个位置去查找资源文件,这也是出于安全的考虑。


而且其中有一些没有用的,我们删掉即可:

从上往下:

image.png

改成如下:

image.png

你可以发现,其实就是在各种相对路径前 加了:

image.png

然后继续往下找:

image.png

image.png

image.png

现在理论上,我们就改完了。可以在其他页面直接引入了。那么我们现在进入home.html,在body内的最上,写下红圈内的代码,意思是引入。

image.png

现在我们再通过平台来访问我们的主页看看效果:

image.png

可以看到这个菜单已经完好无损的 展示了。


现在我们来观察这个菜单,其实它上面很多哦功能我们都用不到,可以删掉对应的HTML代码,也可不删除。

甚至左上角的这个色块条,其实就是个logo的位置,我们可以去改变下这个色块的图片,换个名还是用新图片代替这个都可以:image.png

总之,这个菜单上的内容,其实都是demo,目的是方便于使用者看到外观,也方便自行去替换成真正的菜单链接。


本节课内容到此结束,下节课我们对这个菜单进行修改,改成符合我们平台的样子哦~

相关文章
|
9天前
|
JavaScript
Vue+element_Table树形数据与懒加载报错Error in render: “RangeError: Maximum call stack size exceeded“
本文讨论了在使用Vue和Element UI实现树形数据和懒加载时遇到的“Maximum call stack size exceeded”错误,指出问题的原因通常是因为数据中的唯一标识符`id`不唯一,导致递归渲染造成调用栈溢出。
22 1
Vue+element_Table树形数据与懒加载报错Error in render: “RangeError: Maximum call stack size exceeded“
在 Vue3 中,如何使用 setup 函数创建响应式数据?
在 Vue3 中,如何使用 setup 函数创建响应式数据?
|
23天前
|
JavaScript
vue学习(8)数据代理
vue学习(8)数据代理
29 1
|
2月前
|
JavaScript
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
这篇文章通过一个实际的Vue项目案例,演示了如何在Vuex中实现多组件间共享数据。文章内容包括在Vuex的state中新增用户数组,创建Person.vue组件用于展示和添加用户信息,以及在Count组件中使用Person组件操作的数据。通过测试效果展示了组件间数据共享和状态更新的流程。
Vue学习之--------深入理解Vuex之多组件共享数据(2022/9/4)
|
8天前
|
JavaScript 前端开发 UED
组件库实战 | 用vue3+ts实现全局Header和列表数据渲染ColumnList
该文章详细介绍了如何使用Vue3结合TypeScript来开发全局Header组件和列表数据渲染组件ColumnList,并提供了从设计到实现的完整步骤指导。
|
8天前
|
开发框架 JavaScript 前端开发
手把手教你剖析vue响应式原理,监听数据不再迷茫
该文章深入剖析了Vue.js的响应式原理,特别是如何利用`Object.defineProperty()`来实现数据变化的监听,并探讨了其在异步接口数据处理中的应用。
|
2月前
|
数据采集 自然语言处理 监控
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
本文介绍了一个基于Python Django框架开发的新媒体网络舆情数据爬取与分析系统,该系统利用Scrapy框架抓取微博热搜数据,通过SnowNLP进行情感分析,jieba库进行中文分词处理,并以图表和词云图等形式进行数据可视化展示,以实现对微博热点话题的舆情监控和分析。
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
|
21天前
|
JavaScript
Vue组件传值异步问题--子组件拿到数据较慢
Vue组件传值异步问题--子组件拿到数据较慢
23 0
|
2月前
|
JavaScript 前端开发
Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
这篇文章介绍了Vue中使用v-model实现表单数据收集的方法,包括基础知识、代码实例和测试效果,并提供了一些额外建议。
Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
|
2月前
|
JavaScript API
Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
这篇博客文章讲解了Vue中列表排序的方法,使用`filter`、`sort`和`indexOf`等数组方法进行数据的过滤和排序,并探讨了Vue检测数据变化的原理,包括Vue如何通过setter和数组方法来实现数据的响应式更新。
Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)