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/<path>')#静态资源在web服务下的地址,没放前端的静态资源这几个route和app.route可以不写
def stat(path):
return static_file(path, root='./dist/') @app.route('/test2020/dist/static/js/<path>')
def js(path): #这几个目录我写成这样是因为vue打包完后目录结构就是dist 里面static等等
return static_file(path, root='./dist/static/js/') @app.route('/test2020/dist/static/css/<path>')
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可能是更好的选择。

真零基础Python开发web的更多相关文章

  1. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

  2. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&amp;seid=15873837810484552531 中的1-14讲

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...

  3. 零基础如何学习 Web 安全?(转)

    在网上看了一篇文章<零基础如何学习 Web 安全?>,虽然很多东西的都不是很懂,感觉挺好的copy过来,慢慢消化: 文章地址:https://www.zhihu.com/question/ ...

  4. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&amp;seid=10211084839195730432#page=25 中的42-45讲 {字典}

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av15123607/?from=search&seid=1021108 ...

  5. 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&amp;seid=15873837810484552531 中的15-23讲

    #coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...

  6. 使用 python 开发 Web Service

    使用 python 开发 Web Service Python 是一种强大的面向对象脚本语言,用 python 开发应用程序往往十分快捷,非常适用于开发时间要求苛刻的原型产品.使用 python 开发 ...

  7. 零基础到精通Web渗透测试的学习路线

    小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...

  8. 零基础Python应该怎样学习呢?(附视频教程)

    Python应该怎样学习呢? 阶段一:适合自己的学习方式 对于零基础的初学者来说,最迷茫的是不知道怎样开始学习?那这里小编建议可以采用视频+书籍的方式进行学习.看视频学习可以让你迅速掌握编程的基础语法 ...

  9. 零基础Python接口测试教程

    目录 一.Python基础 Python简介.环境搭建及包管理 Python基本语法 基本数据类型(6种) 条件/循环 文件读写(文本文件) 函数/类 模块/包 常见算法 二.接口测试快速实践 简单接 ...

  10. 【雕爷学编程】零基础Python(01)---“投机取巧”的三条途径

    从3月13日报名尝试上网课学习(4天课8.9元),开始接触Python(中文发音“派森”),到今天有一星期了.这两天广泛搜索了一下相关的学习途径,本着“投机取巧”的出发点,居然小有心得,这里一并分享出 ...

随机推荐

  1. HTML5移动开发学习笔记之CSS3基础学习

    CSS回顾 在学CSS3之前首先巩固下CSS的基础知识. 1.CSS框模型 举例子: #box { width: 70px; margin: 10px; padding: 5px; } 这个代码将出现 ...

  2. spring+mybatis多数据源动态切换

    spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源.oracle为默认数据源,在测试的action中,进行mysql和oracle的动态切换. web. ...

  3. Android Studio Jni 环境搭建

    第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置 安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压.下面给出两个下载地址 (1)官网:http://we ...

  4. Android Material Design控件学习(一)——TabLayout的用法

    前言 Google官方在14年Google I/O上推出了全新的设计语言--Material Design.一并推出了一系列实现Material Design效果的控件库--Android Desig ...

  5. android游戏物理引擎开发——粒子系统(三)

    生病了,医院躺了几天,动了个小手术,动手术之后的几天在医院看了几本<大众软件>,又想到自己必须得买台台式机了,这破笔记本实在用不下去了,然后开始喜欢看些硬件的东西,等我熟悉了以后,写几个硬 ...

  6. SpringMVC学习手册(一)------工作原理解析

    1.什么是MVC模式 图解:   2.SpringMVC原理图解:       springMVC中的几个组件: 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CP ...

  7. 2019-2-14SQLserver中拼音查询数据

    SQLserver中获取文字的全拼音: CREATE function [dbo].[f_GetPinyin](@words nvarchar()) returns varchar() as begi ...

  8. Hive记录-配置远程连接(JAVA/beeline)

    1.修改配置hive-site.xml    hadoop core-site.xml限制---参考Hive记录-部署Hive环境 2.启动hadoop #sh /usr/app/hadoop/sbi ...

  9. redis基本命令

    1指定配置文件启动 ./redis-server /opt/server/redis/conf/redis.conf vim redis.conf #配置文件requirepass    #后面跟密码 ...

  10. 使用eclipse为Servlet在Tomcat中的部署方法

    一:下载安装jdk,tomcat,eclipse: 使用eclipse建立动态web项目lcj,更改编译文件目录,方法如下: 右键点击→工程名称→属性(Properties)或(Building Pa ...