返回顶部
首页 > 资讯 > 后端开发 > Python >Python学习教程:前后端分离开发入门
  • 958
分享到

Python学习教程:前后端分离开发入门

2023-06-02 00:06:42 958人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天的python学习教程跟大家讲讲关于:前后端分离开发入门的相关内容!在传统的WEB应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有

今天的python学习教程跟大家讲讲关于:前后端分离开发入门的相关内容!

在传统的WEB应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端。所谓前后端分离的开发,就是前后端工程师约定好数据交互接口,并行的进行开发和测试,后端只提供数据,不负责将数据渲染到页面上,前端通过Http请求获取数据并负责将数据渲染到页面上,这个工作是交给浏览器中的javascript代码来完成。

使用前后端分离开发有诸多的好处,下面我们简要的说下这些好处:

  1. 提升开发效率。前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。在这种情况下,前后端工程师都可以只专注于自己的开发工作,有助于打造出更好的团队。除此之外,在前后端分离的开发模式下,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。
  2. 增强代码的可维护性。前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系,这样的话维护代码的工作将变得轻松愉快很多,再不会牵一发而动全身。当你的代码变得简明且整洁时,代码的可读性和可维护性都会有质的提升。
  3. 支持多终端和服务化架构。前后端分离后,同一套数据接口可以为不同的终端提供服务,更有助于打造多终端应用;此外,由于后端提供的接口之间可以通过HTTP(S)进行调用,有助于打造服务化架构(包括微服务)。

接下来我们就用前后端分离的方式来改写之前的投票应用。

Python学习教程:前后端分离开发入门

返回JSON格式的数据

刚才说过,在前后端分离的开发模式下,后端需要为前端提供数据接口,这些接口通常返回jsON格式的数据。在Django项目中,我们可以先将对象处理成字典,然后就可以利用DjanGo封装的JsonResponse向浏览器返回JSON格式的数据,具体的做法如下所示。

def show_subjects(request):    queryset = Subject.objects.all()    subjects = []    for subject in queryset:        subjects.append({            'no': subject.no,            'name': subject.name,            'intro': subject.intro,            'isHot': subject.is_hot        })    return JsonResponse(subjects, safe=False)

上面的代码中,我们通过循环遍历查询学科得到的QuerySet对象,将每个学科的数据处理成一个字典,在将字典保存在名为subjects的列表容器中,最后利用JsonResponse完成对列表的序列化,向浏览器返回JSON格式的数据。由于JsonResponse序列化的是一个列表而不是字典,所以需要指定safe参数的值为False才能完成对subjects的序列化,否则会产生TypeError异常。

可能大家已经发现了,自己写代码将一个对象转成字典是比较麻烦的,如果对象的属性很多而且某些属性又关联到一个比较复杂的对象时,情况会变得更加糟糕。为此我们可以使用一个名为bpmappers的三方库来简化将对象转成字典的操作,这个三方库本身也提供了对Django框架的支持。

安装三方库bpmappers。

pip install bpmappers

编写映射器(实现对象到字典转换)。

from bpmappers.djangomodel import ModelMapperfrom poll2.models import Subjectclass SubjectMapper(ModelMapper):       class Meta:        model = Subject

修改视图函数。

def show_subjects(request):    queryset = Subject.objects.all()    subjects = []    for subject in queryset:        subjects.append(SubjectMapper(subject).as_dict())    return JsonResponse(subjects, safe=False)

配置URL映射,然后访问该接口,可以得到如下所示的JSON格式数据。

[    {        "no": 101,        "name": "Python全栈+人工智能",        "intro": "Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。",        "create_date": "2017-08-01",        "is_hot": true    },    // 此处省略下面的内容]

如果不希望在JSON数据中显示学科的成立时间,我们可以在映射器中排除create_date属性;如果希望将是否为热门学科对应的键取名为isHot(默认的名字是is_hot),也可以通过修改映射器来做到。具体的做法如下所示:

from bpmappers import RawFieldfrom bpmappers.djangomodel import ModelMapperfrom poll2.models import Subjectclass SubjectMapper(ModelMapper):    isHot = RawField('is_hot')    class Meta:        model = Subject        exclude = ('create_date', 'is_hot')

再次查看学科接口返回的JSON数据。

[    {        "no": 101,        "name": "Python全栈+人工智能",        "intro": "Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。",        "isHot": true    },    // 此处省略下面的内容]

关于bpmappers详细的使用指南,请参考它的官方文档,这个官方文档是用日语书写的,可以使用浏览器的翻译功能将它翻译成你熟悉的语言即可。

使用vue.js渲染页面

关于Vue.js的知识,我们在第21天到第30天的内容中已经介绍过了,这里我们不再进行赘述。如果希望全面的了解和学习Vue.js,建议阅读它的官方教程或者在YouTube上搜索Vue.js的新手教程(Crash Course)进行学习。

重新改写subjects.html页面,使用Vue.js来渲染页面。

<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>学科</title></head><body>    <h2>所有学科</h2>    <hr>    <div id="app">        <div v-for="subject in subjects">            <h4>                <a :href="getTeachersHref(subject.no)">{{ subject.name }}</a>                <img v-if="subject.isHot" src="/static/images/hot.png" width="32">            </h4>            <p>{{ subject.intro }}</p>        </div>    </div>    <script src="https://cdn.bootCSS.com/vue/2.6.10/vue.min.js"></script>    <script>        const app = new Vue({            el: '#app',            data: {                subjects: []            },            created() {                fetch('/subjects/')                    .then(resp => resp.json())                    .then(json => this.subjects = json)            },            methods: {                getTeachersHref(sno) {                    return `/static/teachers.html/?sno=${sno}`                }            }        })    </script></body></html>

前后端分离的开发需要将前端页面作为静态资源进行部署,项目实际上线的时候,我们会对整个Web应用进行动静分离,静态资源通过Nginx或Apache服务器进行部署,生成动态内容的Python程序部署在uWSGI或者Gunicorn服务器上,对动态内容的请求由Nginx或Apache路由到uWSGI或Gunicorn服务器上。

在开发阶段,我们通常会使用Django自带的测试服务器,如果要尝试前后端分离,可以先将静态页面放在之前创建的放静态资源的目录下。

更多的Python学习教程接下来继续会为大家更新!大家有那些不清楚的地方,也可以留言!

--结束END--

本文标题: Python学习教程:前后端分离开发入门

本文链接: https://lsjlt.com/news/228256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python学习教程:前后端分离开发入门
    今天的Python学习教程跟大家讲讲关于:前后端分离开发入门的相关内容!在传统的Web应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有...
    99+
    2023-06-02
  • Python中关于前后端分离开发入门的示例分析
    本篇文章为大家展示了Python中关于前后端分离开发入门的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前后端分离开发入门在传统的Web应用开发中,大多数的程序员会将浏览器作为前后端的分界线...
    99+
    2023-06-02
  • PHP入门指南:前后端分离
    作为一门非常流行的编程语言,PHP 在互联网开发中扮演着重要的角色。而随着近年来前后端分离的趋势愈发明显,越来越多的 PHP 开发者也在思考如何更好地进行前后端分离开发。本文将为大家介绍 PHP 入门指南,教你如何进行前后端分离。1、前后端...
    99+
    2023-05-23
    PHP 前后端分离 入门指南
  • python开发前后端分离的好处
    这篇文章主要介绍“python开发前后端分离的好处”,在日常操作中,相信很多人在python开发前后端分离的好处问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python开发前后端分离的好处”的疑惑有所帮助!...
    99+
    2023-06-02
  • Spring Boot前后端分离之后端开发
    Spring Boot前后端分离开发之后端开发 前后端分离开发概述相关术语前后端分离开发概述 接口规范RESTful API的理解RESTful风格的特点URI规范路径请求方式...
    99+
    2023-09-04
    spring boot 后端 java
  • 前端开发TypeScript入门基础教程
    TYPESCRIPT 官网 github TypeScript是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会被编译为JavaScript代码。 可...
    99+
    2024-04-02
  • 分析Java前后端分离以及Vue.js入门
    本篇内容介绍了“分析Java前后端分离以及Vue.js入门”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前...
    99+
    2024-04-02
  • Web前端开发学习入门知识点有哪些
    这篇文章主要介绍“Web前端开发学习入门知识点有哪些”,在日常操作中,相信很多人在Web前端开发学习入门知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Web前端开...
    99+
    2024-04-02
  • PHP学习笔记:前后端分离与API设计
    概述:随着互联网的不断发展和用户需求的不断增加,前后端分离的开发模式越来越受到开发者的重视。前后端分离是指将前端和后端的开发分离开来,通过API进行数据交互,实现开发的高效性和灵活性。本文将介绍前后端分离的概念,以及如何设计API。前后端分...
    99+
    2023-10-21
    前后端分离 API设计 PHP学习
  • Android app开发中的Fragment入门学习教程
    在Android3.0上开始引入了一个新概念叫Fragment。它有自己的布局文件,可以作为组件排布,也可以相互组合去实现不同的布局显示。使用Fragment可以重复利用代码,...
    99+
    2022-06-06
    学习 fragment app 教程 Android
  • Python画图学习入门教程
    本文实例讲述了Python画图的基本方法。分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib,可以制作出高质量的...
    99+
    2022-06-04
    画图 入门教程 Python
  • web前端视频教程?自学前端,怎样入门?
      学习前端,要从学习HTML和CSS开始着手。关于这部分的学习,网上可选择的资料就太多了,这里不一一列举,题主百度搜索栏搜索 HTML 教程,或者css 教程,就可找到相关资料。  接着是学习前端的一个难点、也是重点,就是JavaScri...
    99+
    2023-06-05
  • Golang前后端分离开发中前端技术选择建议。
    标题:Golang前后端分离开发中前端技术选择建议 随着Web应用程序的复杂性和需求不断增加,前后端分离开发模式变得越来越流行。在这种开发模式下,后端负责处理业务逻辑,前端负责展示页面...
    99+
    2024-03-05
    golang 分离 前端技术选择
  • mac python学习开发简单入门
    安装 Mac自带python 在/usr/bin/python 进入终端直接键入python即可进入交互模式 或是python xxx.py 运行 写好的python程序 Last login: Sat Aug 19 20...
    99+
    2023-01-31
    入门 简单 mac
  • thinkphp怎么实现前后端分离的开发
    这篇文章主要讲解了“thinkphp怎么实现前后端分离的开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“thinkphp怎么实现前后端分离的开发”吧!跨域访问在前后端分离的开发中,前端通常...
    99+
    2023-07-05
  • Python学习入门基础教程(learn
     在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆。      函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则是通过函数名来使用这一堆语句...
    99+
    2023-01-31
    基础教程 入门 Python
  • Python学习入门基础教程(lear
      在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识。逻辑关系运算有以下几种运算符.     ...
    99+
    2023-01-31
    基础教程 入门 Python
  • Python装饰器入门学习教程(九步学习)
    装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数...
    99+
    2022-06-04
    入门 教程 Python
  • Web前后端分离开发的方法是什么
    本篇内容主要讲解“Web前后端分离开发的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Web前后端分离开发的方法是什么”吧!在传统的Web应用开发中,大多数的程序员会将浏览器作为前后端...
    99+
    2023-06-01
  • Python和前端开发哪个更好入门?
      编程是当下非常受人喜欢的行业,也是很多人都比较重视的行业,毕竟发展前景好、薪资待遇高。对于编程行业来说,前端开发和Python是非常热门的,那么这两者之间该如何选择呢让很多人都产生疑问,今天为大家说说吧。  首先,无论是Python还是...
    99+
    2023-06-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作