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通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
关于python2 csv写入空白行的问题
Jun 22 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 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+ACCESS 文章管理程序代码
2010/06/21 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
Vue头像处理方案小结
2018/07/26 Javascript
vue-for循环嵌套操作示例
2019/01/28 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python二元赋值实用技巧解析
2019/10/25 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
老师对学生的寄语
2014/04/09 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
民政局个人整改措施
2014/09/24 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
民主评议党员工作总结
2014/10/20 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
西安事变观后感
2015/06/12 职场文书
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS