百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

真零基础Python开发web

liuian 2025-02-11 12:41 27 浏览

Python开发web服务的优势是开发效率高,可能只需要java五分之一的代码量。
Python搭建web服务有许多框架,本文介绍Django和bottle两个框架。

Django

安装

首先,安装该框架


安装成功,版本是1.11.28. 框架的文件安装在\python27\Scripts目录下(搜索电脑中Python安装目录下的Scripts就对了)。

建立项目

先进入\python27\Scripts目录,建立项目jinanwx(名称随便起)

同一个目录下可以看到新建立工程的目录

开发自己模块

进入python27\Scripts\jinanwx\jinanwx。新建我们自己的模块

jgotest01.py里面写简单的代码如下

模块功能就是返回个json格式结果。

修改urls模块

然后需要改urls.py模块

目录文件如下

就这么简单,新建一个文件再修改一个文件,就成了。

启动服务

回到上一级目录启动服务

启动成功,浏览器访问试试

bottle

开发功能不是特别复杂的web服务,可以考虑使用bottle框架,它比Django轻量。bottle例子在Linux下演示。

安装

使用bottle框架首先安装。一个指令搞定。

#?pip?install?bottle??

进入Python命令行import bottle,没报错就是成功了。

代码

我的web服务就一个文件bottleweb.py,代码如下,一些解释在代码的注释里

#coding=utf-8??
from?bottle?import?(run,?route,?get,?post,?put,?delete,?request,?hook,?response,?static_file,?app)??
import?json??
import?MySQLdb?#本例子需要操作数据库,否则可以不写这行,这个数据库包pip估计安装不会成功,我是用yum?install?MySQL-python成功的??
import?sys??
reload(sys)????
sys.setdefaultencoding('utf8')??

import?bottle??
app?=?bottle.default_app()#处理静态资源需要定义,没有静态资源可以不写这行??
#搭建vue脚手架前后台联调时要下面两个@hook内容,否则会报跨域访问资源的错误??
@hook('before_request')??
def?validate():??
????REQUEST_METHOD?=?request.environ.get('REQUEST_METHOD')??

????HTTP_ACCESS_CONTROL_REQUEST_METHOD?=?request.environ.get('HTTP_ACCESS_CONTROL_REQUEST_METHOD')??
????if?REQUEST_METHOD?==?'OPTIONS'?and?HTTP_ACCESS_CONTROL_REQUEST_METHOD:??
????????request.environ['REQUEST_METHOD']?=?HTTP_ACCESS_CONTROL_REQUEST_METHOD??


@hook('after_request')??
def?enable_cors():??
????response.headers['Access-Control-Allow-Origin']?=?'*'??
????response.headers['Access-Control-Allow-Methods']?=?'GET,POST,PUT,DELETE,OPTIONS'??
????response.headers['Access-Control-Allow-Headers']?=?'*'??

@route('/test2020/dist/')#静态资源在web服务下的地址,没放前端的静态资源这几个route和app.route可以不写??
def?stat(path):??
????return?static_file(path,?root='./dist/')??

@app.route('/test2020/dist/static/js/')????
def?js(path):??#这几个目录我写成这样是因为vue打包完后目录结构就是dist?里面static等等??
????return?static_file(path,?root='./dist/static/js/')??

@app.route('/test2020/dist/static/css/')???
def?css(path):???
????return?static_file(path,?root='./dist/static/css/')??
????
@get('/test2020/date')#返回某个表中的日期,看sql你就明白了??
def?helloins():??
????db?=?MySQLdb.connect("127.0.0.1",?"yourusername",?"yourpassword",?"yourDBname",?charset='utf8'?)??
????cursor?=?db.cursor()??
????sql?=?"select?DISTINCT?date?from?testtable"??
????print?sql??
????cursor.execute(sql)??
????data?=?cursor.fetchall()??
????jsondata={}??
????results=[]??
????for?row?in?data:??
????????result?=?{}??
????????result['DATE']?=?row[0]??
????????results.append(result)??
????jsondata['code']=0??
????jsondata['datas']=results??
????return?jsondata??#返回json格式为了方便前端vue接收处理,其实返回各种类型都可以??
????
@get('/test2020/helloworld')??
def?helloworld():??
????return?'hello?world!'??
????
if?__name__?==?'__main__':??
????run(host='0.0.0.0',?port=2020,?debug=True,?reloader=True)??

bottleweb.py所在目录执行

#python?bottleweb.py

web服务就启动了。浏览器访问
http://127.0.0.1:2020/test2020/helloworld看效果。

如果安装了MySQL数据库可以测试test2020/date的url是否能返回结果

数据库只要有下面的数据就可以

前端页面是这个样子的,给用户选择某个日期。


前端是用vue+vux来开发的,开发完打包打出的东西上传到代码中提到的dist静态资源目录下。
如果觉得上面的代码有点复杂,可以把所有route, app.route的东西删除,把/test2020/date语句块也删除,把@hook删除,MySQL的东西删除,前端的东西也完全不考虑,就是最简单的bottle web服务,相当于hello world。
建议尽量懂上面的代码,涉及了静态资源,数据库,是web服务必须的内容。

pip升级的坑

分享一个遇到的pip的问题,我Python版本很低2.6.6。本来通过安装yum的epel,已经成功安装了好用的pip。但是每次我用pip命令,最下方都会提示升级

You?are?using?pip?version?9.0.3,?however?version?20.0.2?is?available.
You?should?consider?upgrading?via?the?'pip?install?--upgrade?pip'?command

我执行了pip install --upgrade pip升级,然后pip指令就不能用了。而且升级了之后,在想安装回低版本的pip就没有对应的安装包了。yum只能找到20.0.2版本的(老版本会被覆盖难道?)。

http://bootstrap.pypa.io/2.6/get-pip.py??

下载了get-pip.py也无法安装成功。最后在上面的地址下载到了2.6版本的安装文件,才成功安装可以使用的pip。

总结

相比java,python开发web代码量少,需要安装的库少,如果能满足功能和性能要求,python可能是更好的选择。

相关推荐

GANs为何引爆机器学习?这篇基于TensorFlow的实例教程为你解惑!

「机器人圈导览」:生成对抗网络无疑是机器学习领域近三年来最火爆的研究领域,相关论文层出不求,各种领域的应用层出不穷。那么,GAN到底如何实践?本文编译自Medium,该文作者以一朵玫瑰花为例,详细阐...

高丽大学等机构联合发布StarGAN:可自定义表情和面部特征

原文来源:arXiv、GitHub作者:YunjeyChoi、MinjeChoi、MunyoungKim、Jung-WooHa、SungKim、JaegulChoo「雷克世界」编译:嗯~...

TensorFlow和PyTorch相继发布最新版,有何变化

原文来源:GitHub「机器人圈」编译:嗯~阿童木呀、多啦A亮Tensorflow主要特征和改进在Tensorflow库中添加封装评估量。所添加的评估量列表如下:1.深度神经网络分类器(DNNCl...

「2022 年」崔庆才 Python3 爬虫教程 - 深度学习识别滑动验证码缺口

上一节我们使用OpenCV识别了图形验证码躯壳欧。这时候就有朋友可能会说了,现在深度学习不是对图像识别很准吗?那深度学习可以用在识别滑动验证码缺口位置吗?当然也是可以的,本节我们就来了解下使用深度...

20K star!搞定 LLM 微调的开源利器

LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为...

大模型DeepSeek本地部署后如何进行自定义调整?

1.理解模型架构a)查看深度求索官方文档或提供的源代码文件,了解模型的结构、输入输出格式以及支持的功能。模型是否为预训练权重?如果是,可以在预训练的基础上进行微调(Fine-tuning)。是否需要...

因配置不当,约5000个AI模型与数据集在公网暴露

除了可访问机器学习模型外,暴露的数据还可能包括训练数据集、超参数,甚至是用于构建模型的原始数据。前情回顾·人工智能安全动态向ChatGPT植入恶意“长期记忆”,持续窃取用户输入数据多模态大语言模型的致...

基于pytorch的深度学习人员重识别

基于pytorch的深度学习人员重识别Torchreid是一个库。基于pytorch的深度学习人员重识别。特点:支持多GPU训练支持图像的人员重识别与视频的人员重识别端到端的训练与评估简单的re...

DeepSeek本地部署:轻松训练你的AI模型

引言:为什么选择本地部署?在AI技术飞速发展的今天,越来越多的企业和个人希望将AI技术应用于实际场景中。然而,对于一些对数据隐私和计算资源有特殊需求的用户来说,云端部署可能并不是最佳选择。此时,本地部...

谷歌今天又开源了,这次是Sketch-RNN

前不久,谷歌公布了一项最新技术,可以教机器画画。今天,谷歌开源了代码。在我们研究其代码之前,首先先按要求设置Magenta环境。(https://github.com/tensorflow/magen...

Tensorflow 使用预训练模型训练的完整流程

前面已经介绍了深度学习框架Tensorflow的图像的标注和训练数据的准备工作,本文介绍一下使用预训练模型完成训练并导出训练的模型。1.选择预训练模型1.1下载预训练模型首先需要在Tensorf...

30天大模型调优学习计划(30分钟训练大模型)

30天大模型调优学习计划,结合Unsloth和Lora进行大模型微调,掌握大模型基础知识和调优方法,熟练应用。第1周:基础入门目标:了解大模型基础并熟悉Unsloth等工具的基本使用。Day1:大模...

python爬取喜马拉雅音频,json参数解析

一.抓包分析json,获取加密方式1.抓包获取音频界面f12打开抓包工具,播放一个(非vip)视频,点击“媒体”单击打开可以复制URL,发现就是我们要的音频。复制“CKwRIJEEXn-cABa0Tg...

五、JSONPath使用(Python)(json数据python)

1.安装方法pipinstalljsonpath2.jsonpath与Xpath下面表格是jsonpath语法与Xpath的完整概述和比较。Xpathjsonpath概述/$根节点.@当前节点...

Python网络爬虫的时候json=就是让你少写个json.dumps()

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和...