当前位置: 首页 > 后端技术 > Python

PythonDjango快速开发音乐高潮抽取网(一)

时间:2023-03-26 02:08:48 Python

大家还记得我们上次做的一个高潮抽取器吗:Python制作音乐高潮抽取器。今天我们就把这个高潮提取器做成一个网站,让很多不懂技术的人也能轻松提取歌曲的高潮/副歌部分。其实这是一个非常简单的单页网站,不需要数据库,不需要celery,也不需要各种先进的后台技术。但是,如果我们适当的使用一些Python的web开发框架,我们可以更快的完成这个网站的开发,同时我们也可以顺便给大家介绍一下web开发框架。所以我们将使用Django来完成这个网站。但是,由于我不想让文章冗长,所以我们将其分为两部分。第一部分是建立一个支持文件上传的简单网站。第二部分将在第一部分的基础上完善文件上传功能,搭建一个音乐高潮提取网。一、准备工作开始之前,需要先安装Python。如果您还没有安装Python,请阅读这篇文章:安装Python的超级详细指南。打开CMD(windows)/Terminal(macos),下面统称为终端,输入安装Django的命令:pipinstallDjango看到终端结果类似如下,说明安装成功.安装climax提取器所需的项目:pipinstallpychorus2。新建一个Django项目在你要放置项目文件的目录下打开终端,输入以下命令:django-adminstartprojectyinyue30如果遇到类似commandDjango-adminnotfound的错误,说明你需要配置Django环境变量。具体可以参考本文windowsDjango安装:https://www.runoob.com/django/django-install.html该命令会新建一个Django项目,目录结构如下:3.Django应用开发创建一个新的Django项目后,我们就可以开始应用开发了。使用终端在生成的yinyue30文件夹中输入如下命令新建一个“提取器(extractor)”应用:pythonmanage.pystartappextractor到这里,应用初始化就正式完成了。我们看一下现在的文件结构:看起来有点复杂,不过没关系,我们只需要管理其中的几个即可。在我们开始编写代码之前,我想解释一下Django的设计模式。3.1Django设计模式简析(这部分可以跳过)传统的网站设计模式是MVC模式,即:M代表模型(Model):负责对象和数据库(ORM)之间的关系。V代表视图(View):负责如何将页面显示给用户(html)。C代表Controller:负责转发请求、处理请求等。本质上Django是类似的模型,但也有一些区别。Django更像是一个MVT模型,其中Controller的功能被分配给View和urlforwarders。在今天的教程中,我们关注的对象是View和Url转发器。3.3模型设计——编写models.py虽然我们的单页应用不需要模型,但是使用模型可以帮助我们简化很多流程。而且代码也很简单:文件会上传到“media/currentdate/”文件夹中,和manage.py在同一层级。如图:Django之所以自带文件模型,不仅仅是因为这个方便,还支持对同名文件的处理。当两个用户上传具有相同文件名的文件时,将添加第二个文件。一串md5作为差值。此外,它还可以限制文件上传的大小,并有许多方便的功能,例如使用API??作为代理来访问基本文件。如果想了解更多细节,可以阅读官方文档:https://docs.djangoproject。com/zh-hans/3.0/ref/models/fields/3.4视图设计—编写views.py在views.py中我们主要做了以下几件事:1.渲染前端页面,让用户提交文件。2.获取用户请求时发送的文件。3、对用户请求的文件进行音乐高潮提取。4、提取后将音乐的高潮部分返回给用户。其中,后端需要验证文件大小(前端验证容易被绕过),然后在提取音乐高潮时,前端要有“正在处理”的提示。提取完成返回结果后,前端直接显示下载按钮。我们先来制作允许用户提交文件的部分。3.4.1编写表单Django有一个我特别喜欢的特性:可以通过Form类生成HTML代码。如果你是做简单的页面开发,不需要前后端分离,这样就很方便了:在extractor文件夹下新建一个forms.py文件,写入如下代码:接下来新建一个templates文件夹在extractor文件夹下,在里面新建一个index.html来编写前端代码和导入表单:大家可以注意到,我们直接导入{{form.docfile}}形式的表单生成前端-结束形式。同时{{form.docfile.label_tag}}可以直接将我们在类中定义的属性引入到前端。另外需要注意的是{%csrf_token%},必须包含在Django表单中。它会在请求中注入令牌以防止跨站点攻击。3.4.2编写views的主要逻辑接下来我们来编写views的主要逻辑,让它接受文件上传的POST请求并渲染前端页面:主要做了几件事:首先,判断请求是否是一个POST请求,如果是POST请求,则进入文件上传和保存逻辑,判断用户上传的表单是否满足要求,满足则保存文档,返回HTTP响应:“上传成功!”。2、如果不是POST请求,说明是普通访问,那么会生成一个空表单,将表单页面渲染到前端,供用户提交文档。3.5配置路由准备好了,接下来我们只需要连接路由,做一些简单的配置就可以成功启动应用了:在extractor下新建一个urls.py文件,里面会存放extractor,我们extractor应用的所有路由(虽然我们只有一个页面),配置如下:它将能够将直接访问域名的请求转发给views中的index函数,这就是我们刚才写在views.py中的主要逻辑。但是这是应用的路由,我们还需要修改Django项目的主路由:修改yinyue30文件夹下的urls.py如下:这里需要在Django中引入include函数,然后在urlpatterns中引入,所有直接指向域名的请求都转发到我们刚刚写的提取器路由(extractor/urls.py),大功告成!3.6配置和迁移我们刚刚编写了一个简单的提取器应用程序。由于Django对APP具有即插即用的特性,我们需要将这个应用程序“塞”进Django中。插入方法也很简单,打开yinyue30文件夹下的settings.py,在INSTALLED_APPS数组中添加'extractor.apps.ExtractorConfig'。在上一步中,Django中有很多内置函数需要用到数据库和表,而我们刚刚创建的文件模型也需要用到数据库,所以我们要创建我们需要的新东西。幸运的是,Django本身有自己的迁移功能。而且默认使用sqlite,方便我们开发简单的应用,因为我们甚至不需要配置mysql直接迁移。在根目录下(与manage.py同级)执行如下命令完成迁移:**_pythonmanage.pymakemigrationspythonmanage.pymigrate_**第一句是生成迁移表,其实是一个文件由一些SQL语句组成。第二句是执行sql操作,即完成迁移功能。4.运行项目接下来,我们可以运行项目。在根目录下(与manage.py同级)执行如下命令运行程序:pythonmanage.pyrunserver运行后访问http://127.0.0.1:8000效果如下:尝试上传,上传成功:顺便检查下是否真的导入了,发现media下有文件,不用担心:那么我们的第一部分任务就顺利完成了!在接下来的部分中,我们将正式添加音乐高潮提取器的部分。敬请关注!关注下方Python实战合集公众号,后台回复MusicClimaxExtractionNetwork获取项目第一部分源码!这是我们文章的结尾。如果你今天想要我们的Python教程,请继续关注我们。如果对您有帮助,请点击下方的赞/观看。有什么问题可以在下方留言区留言,我们会耐心解答!Python实战宝典(pythondict.com)不只是一个合集欢迎关注公众号:Python实战宝典原文来自Python实战宝典:PythonDjango快速开发