python前后端分离开发,python前后端分离的web框架

  python前后端分离开发,python前后端分离的web框架

  基于python 1的前端分离开发。前端分离汇总返回JSON-form数据,并使用Vue.js渲染页面

  1.前端和后端分离概述

  在传统的web APP应用开发中,很多程序员以浏览器为前后界。浏览器为用户显示页面的部分称为前端,所有运行在服务器上,为前端提供业务逻辑和数据的代码统称为后端。前端和后端分离的开发是指承诺前端和后端工程师之间交换数据,并行进行开发和测试的接口。后端只提供数据,不负责在页面上呈现数据。前端通过HTTP请求数据,并将数据呈现在页面上。这项工作留给浏览器中的JavaScript代码。

  前台和后台分开开发有很多好处。让我简单解释一下这些好处。

  提升开发效率前后端分离后,前后端代码可以解耦。只要前后端沟通好,对APP需要的接口和接口参数达成一致,就可以并行开发,不用等对方开发工作完成。在这种情况下,前端工程师只能专注于自己的发展,这有助于建立一个更好的团队。另外,在前端和后端分离的开发模式下,如果需要更改,但接口和数据格式不变,那么后端开发人员只需要更改前端,不需要修改代码。增强代码的可维护性分离后,APP应用的代码在运行时只能有调用依赖,而不是混乱。这样维护代码的工作会变得更容易,你也不会一个人动身体。qxdxmg代码的简洁和干净可以提高代码的可读性和可维护性。支持多终端和服务化架构分离后,同一个数据接口可以服务不同的终端,有助于构建更多的终端APP应用;也可以在后端提供的接口之间通过http(s)调用,从而帮助构建包含微服务器的面向服务的架构。Python后端代码可以返回json格式的数据,将后端的输出返回到前端,然后使用Vue.js渲染前端页面。

  2.在返回2的前端。JSON格式数据和另一种开发模式,后端必须为前端提供数据接口。这些接口通常以JSON格式返回数据。在Django项目中,可以先把对象当成字典,然后用Django封装的JsonResponse把JSON格式的数据返回给浏览器。具体方法如下。

  def show _ subjects(request):query set=subject . objects . all)subjects=[]for subjectnqueryset 3360 subjects . for subjectnqueryset 360 name :subject . name, intro: subject.intro,Ishot :subject . is _ hot }(Return jsonresponse(suushot)subject . is _ hot))Return JSON我们通过查询学科的querysson将字典保存在一个名为subjects的列表容器中,最后用JSON response序列化列表,将JSON格式的数据返回给浏览器因为JsonResponse序列化列表而不是字典,所以必须将safe参数的值指定为False来完成主题的序列化。否则,将发生TypeError异常。

  你可能已经知道了,自己写代码把对象转换成字典很麻烦。如果一个对象有很多属性,而且有些属性和复杂的对象有关联,情况会更糟。因此,可以使用一个名为bpmappers的三方库来简化将对象转换为字典的操作。这个三方库本身也支持Django框架。

  安装第三方库BPM pers .

  pipinstallbpmappers 3358 www.Sina.com/

  Frombmappers。Djangomomodemport模型映射器Poll2。模型子对象类主题映射器(模型映射器)3360类元数据3360

  def show _ subjects(request):query set=subject . objects . all)subjects=[]for subjectnqueryset 3360 subjects . fory

  URL模式=[ path (API/subjects/,show_subjects ) ]编写映射器(实现对象到字典转换)

  荣.

  [{no: 1, name: Python全栈人工智能, intro: Python是一种计算机编程语言。是一种面向对象的动态类型语言,最初设计用于编写自动化脚本(shell)。随着版本的不断更新和语言新功能的增加,它越来越多地被用于独立和大规模项目的开发。 is_hot: true }、//此处省略以下内容]如果不想在JSON数据中显示学科的建立时间,我们可以在mapper中排除create_date属性;如果您想将对应于热主题的键命名为isHot(默认名称为is_hot),也可以通过修改映射器来实现。具体做法如下:

  从bpmappers导入rawfield从bpmappers.djangomodel导入ModelMapperfrom poll2.models导入subject class subject mapper(model mapper):ishot=rawfield( is _ hot )class meta:model=subject exclude=( is _ hot ),再次检查subject接口返回的JSON数据。

  [{no: 101, name: Python全栈人工智能, intro: Python是一种计算机编程语言。是一种面向对象的动态类型语言,最初设计用于编写自动化脚本(shell)。随着版本的不断更新和语言新功能的增加,它越来越多地被用于独立和大规模项目的开发。 isHot: true },//此处省略以下内容]有关bpmappers的详细使用指南,请参考其官方文档。这份公文是用日语写的,你可以用浏览器的翻译功能翻译成你熟悉的语言。

  3.使用Vue.js渲染页面,接下来我们使用前端框架vue.js渲染页面。如果想全面了解和学习Vue.js,建议阅读其官方教程或者在w3school上学习Vue.js教程。

  重写subjects.html页面,并使用Vue.js来呈现页面。

  !doctype HTML HTML lang= en headmethacharaset= UTF-8 Title学科信息/title style/*此处省略层叠样式表*/style/head body div ID= container H1定学堂中的所有学科/h1 HR div ID= main dl v-for= subjects中的subject dt a:rel= external no follow href= /static/HTML/teachers . HTML?SnO= subject . no { { subject . name } }/a img v-if= subject . is _ hot src=/static/images/hot-icon-small . png /dt DD { { subject . intro } }/DD/dl/div/div script src= https://cdn . bootcdn . net/Ajax/libs/Vue/2 . 6 . 11/Vue . min . js /script script let app=new Vue({ El: # main ,data然后(resp=resp.json())。然后(JSON={ this . subjects=JSON })} })/script/body/html前端分离的开发需要将前端页面作为静态资源进行部署。当项目真正上线时,我们会将整个Web应用从静态资源中分离出来。静态资源通过Nginx或Apache服务器部署,生成动态内容的Python程序部署在uWSGI或Gunicorn服务器上,对动态内容的请求通过Nginx或Apache路由到uWSGI或Gunicorn服务器。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: