Ubuntu下Python+Flask分分钟搭建自己的服务器教程


Posted in Python onNovember 19, 2019

最近帮朋友做了点东西,最后需要将结果在网页中展示,这就需要搭建个服务器,做几个网页把数据信息展示出来。网上找了一下,阿里腾讯都有租服务器的业务,但是有的时候我们并不需要那么复杂大型的服务器,只是一个小功能,小展示,并不复杂,那么我们完全可以自己动手,在自己的小电脑上搭建一个服务器。下面文章记录一下自己折腾的过程。

Flask安装

Ubuntu自带python2,因此不用麻烦装python了。Flask是pyhton下的一个很实用的web框架,接下来安装Flask就好,网上找了一圈,大部分都说要先装virtualenv,还要配置环境巴拉巴拉,其实并不用这么麻烦,virtualenv确实有一些优点,比如隔离环境啥的,不过如果我们就是在自己机器上使用,没有过多需求要切换各种环境啥的,可以直接安装Flask使用,感兴趣的小伙伴也可以自己查virtualenv的功能和使用。真正安装Flask只需一句话,在命令行中输入已下代码即可:

sudo pip install flask

当然如果你没安装pip的话就得先安装pip了,这里不再概述,网上都有讲怎么安装pip。

Flask的使用

ok,装好flask之后就可以马上试一试了,当然最开始我们都是用helloword的例子来开始,可以这么认为,flask的框架是有一定模板的,那么我们只需要记住几个基本模板,等需要具体操作的时候再根据具体情况进行相应修改就可以了。下面是helloword的模板,也是最基本的一种用法。

新建一个python文件,输入下面的代码:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
 return "hello world" 
if __name__ == "__main__":
 app.run(host='0.0.0.0',port =8080)

写完之后,在文件夹下运行该python文件,此时启动服务,然后在浏览器中输入localhost:8080即可访问,此时返回我们之前定义的helloword,如下图所示:

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

完这些,我们又有了新的需求,如果我在浏览器上面不仅仅要输入localhost:8080,我还想输入或者传入其他的参数,比如一个id或者一个字符,很多时候我们都是根据请求的这一串url中根据传入的参数去进行数据的筛选等操作。接下来我们只需要对传入的url进行处理即可,使用下面代码即可:

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route("/info",methods=['GET',])
def sendinfo():
 #获取到传入url中参数id对应的值
 sendid = request.args.get('id')
 return "Get info id is " + str(sendid) 
if __name__ == "__main__":
 app.run(host='0.0.0.0',port =8080)

改完代码之后重新启动,然后在浏览器中输入"http://localhost:8080/info?id=666",即可显示效果,如下图所示:

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

可以看到这个时候界面把我们在url中传入的参数显示出来了。

接下来我们又会有想法了,能不能显示html文件?当然可以!这个时候我们要在原来的放置python脚本的文件夹下新建一个templates文件夹,所有你想调用的html文件都放在这个文件夹里面。下面简单实现一个html文件,当然小伙伴们也可以自己去网上下载一些更好的html模板。

<html>
 <body>
 <h1>Hello World</h1>
 <p>This is a Test for Flask</p>
 </body>
 </html>

这个时候,我们的文件夹结构如下图所示:

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

然后我们修改python脚本。

from flask import Flask
from flask import render_template
app = Flask(__name__)

@app.route("/")
def sendtemplate):
 return render_template("test.html") 
if __name__ == "__main__":
 app.run(host='0.0.0.0',port =8080)

重启之后,运行脚本,在浏览器中输入地址,效果如下图所示:

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

晋级-Flask模板中显示参数

刚刚讲到了怎么在url中传入参数,也讲到了怎么调用html模板文件,那么如何将两者结合起来,输入的url参数在模板中显示出来?不要急,跟着下面一起做。首先修改python脚本。

from flask import Flask
 from flask import request
 from flask import render_template
 
 app = Flask(__name__)
 
 @app.route("/info",methods=['GET',])
 def sendinfo_tem():
 #获取到传入url中参数id对应的值
 sendid = request.args.get('id')
 return render_template("test.html",u=sendid)
 
 if __name__ == "__main__":
 app.run(host='0.0.0.0',port=8080)

u这个参数就是传入html模板中的值,当然也可以有第二个、第三个参数值传入。接下来修改一下html文件,接收并显示我们传入的参数值。

<html>
 <body>
 <h1>Hello World</h1>
 <p>The send id is {{u}}</p>
 </body>
 </html>

"{{u}}"就是我们传入的参数值,接下来重启运行,在浏览器输入url,效果如下图所示:

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

晋级-显示图片

一般说到显示图片,大家就会想到,ok我在html文件中写好要显示的图片的路径,比如/home/xxx/xxx.jpg这种,但是在这里不能直接写绝对路径,一定要通过url写,因为这个时候相当于通过服务器的请求来显示图片。这个时候我们首先要在脚本所在的文件夹中新建static目录,再在static目录中新建images目录,然后将要显示的图片放入images目录中,具体文件结构如下图所示。

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

然后我们修改之前的html文件。

<html>
 <body>
 <h1>Hello World</h1>
 <p>The send id is {{u}}</p>
 <img src="{{url_for('static',filename='images/1.jpg')}}"/>
 </body>
 </html>

对于python脚本不用修改,但是由于python2的一些编码问题,如果运行后报错

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 10: ordinal not in range(128)

等内容,可以在前面加入以下三句话。

import sys
reload(sys)
sys.setdefaultencoding('utf8')

然后重启运行,在浏览器中输入url,显示如下所示:

Ubuntu下Python+Flask分分钟搭建自己的服务器教程

这回图片、传参、html模板、文字全都教会大家了,小伙伴们可以自己设计美美的html,搭建服务器显示了!

其他

此时搭建完的网站,只有和你的笔记本或者电脑(现在已经变成服务器了)处于同一个局域网的小伙伴才能访问你的网站,访问的方式是将上面的url网址的localhost换成你的ip地址即可。有的时候如果我们想用外网让其他人访问,可以使用一些工具做内网穿透,这里就不再细说,网上有很多免费做内网穿透的软件,比如“花生壳"或者”nat123“等,大家可以自行查找。当然我们这里只是最简单的操作介绍了flask搭建服务器的操作,真正的大型服务器还要考虑性能、压力、效率、安全等多种因素,感兴趣的小伙伴可以再深入学习^_^

以上这篇Ubuntu下Python+Flask分分钟搭建自己的服务器教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python利用微信公众号实现报警功能
Jun 10 Python
Django-Rest-Framework 权限管理源码浅析(小结)
Nov 12 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Pytorch之Variable的用法
Dec 31 Python
Python sys模块常用方法解析
Feb 20 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 #Python
python flask搭建web应用教程
Nov 19 #Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 #Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 #Python
python tornado修改log输出方式
Nov 18 #Python
Python3常用内置方法代码实例
Nov 18 #Python
python tornado使用流生成图片的例子
Nov 18 #Python
You might like
PHP生成便于打印的网页
2006/10/09 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
2016/02/23 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
Python调用C语言的实现
2019/07/26 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
servlet面试题
2012/08/20 面试题
涉外文秘个人求职的自我评价
2013/10/07 职场文书
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
总经理岗位职责范本
2014/02/02 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
大学新生入学感想
2015/08/07 职场文书