前言
初次学习python,这里主要是记录一下学习当中遇到的遇到的问题以及经验,诸多部分是对前辈的借鉴。
- 环境搭建
- 使用virtualenv创建一个纯净的python环境,避免污染全局环境
sudo easy_install virtualenv virtualenv venv // venv环境名
- 激活虚拟环境
source venv/bin/activate
- 安装flask
pip install flask
- server模块
#! /usr/bin/python
#-*- coding:utf-8 -*-
#server模块
from uuid import uuid4
from time import time
import json
class server:
"""docstring for server"""
def __init__(self, content):
self.id = str(uuid4())
self.content = content
self.is_finished = False
self.created_at = time()
self.finished_at = None
def finish(self):
self.is_finished = True
self.finished_at = time()
def jsonMe(self):
return json.dumps({
'id':self.id,
'content':self.content,
'is_finished':self.is_finished,
'finished_at':self.finished_at,
'created_at':self.created_at
})
- 开启服务
#! /usr/bin/python
# -*- coding:utf-8 -*-
from flask import Flask,abort,request,Response,g
from flask import jsonify
from hcserver.server import *
# 模块
# 在这里server为说需要调用的模块
# 1.将server.py和servertest.py放到同一目录下,引入模块:import server 或 from server import *
#
# 2.可以在servertest.py目录下创建一新文件夹,文件夹下放有多个模块(即多个.py文件),这种情况下,需要在
# 给文件夹下创建__init__.py文件,或空或为python代码,这样便成为一个包package
# 引入模块:import folder.server 或 from folder.server import *
// 创建服务器实例
app = Flask(__name__)
servers = {} #服务列表
get_server = lambda ser:servers.get(ser,False) #获取servers里的服务,若找不到,默认值为False
@app.route('/servers')
def show():
return jsonify(data = [ser.jsonMe() for ser in servers.values()])
@app.route('/servers',methods=['POST'])
def add():
content = request.args.get("content",None)
if not content:
abort(400)
ser = server(content)
servers[ser.id] = ser
return Response()
# <serid>表示此请求会传入一个值serid
@app.route('/servers/<serid>/finished',methods=['PUT'])
def finish(serid):
ser = get_server(serid)
# 查不到数据
if not ser:
abort(404)
ser.finish()
return Response()
@app.route('/servers/<serid>',methods=['DELETE'])
def delete(serid):
ser = get_server(serid)
#查不到数据
if not ser:
abort(404)
# python的字典操作
# 1.clear servers.clear() 字典清空
# 2.pop servers.pop(key) 移除字典对应key的键值对
# 3.popitem servers.popitem() 随机返回并删除字典中的一对键和值(项),在工作时如果遇到需要逐一删除项的工作,用popitem()方法效率很高。
servers.pop(serid)
return Response()
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8000)