很久之前用tkinter写过一些GUI工具,比如调百度翻译接口的翻译器、爬虫音乐、图片等等的一些小工具等

然后上个周末时又用tkinter写了一个界面工具:自动生成一些测试数据,如下:

点击不同按钮,生成对应的数据

用flask搭建一个测试数据生成器(v1.0)

但是这种GUI工具不太好分享给其他人使用(要么把代码给别人,要么转成exe程序,2种方法都比较麻烦)

刚好这段时间看了flask,所以就产生了一个想法:使用flask把这个功能做成web页面

OK,下面来看整个实现过程。注意,本文不讲基础的flask配置,直接从具体实现入手~

 一、编写生成测试数据的后台处理逻辑

首先创建一个flask项目,然后在app.py中编写视图函数以及构造测试数据的逻辑代码(主要利用faker库来生成诸如手机号码、身份证id、人名等数据)

1、首先创建一个视图函数,作为程序访问入口

@app.route('/index')
def index():
    return render_template("base.html")

base.html 是我在templates目录下创建的模板(先放在这里,等下再编写对应的html代码)

2、编写生成电话号码的逻辑代码

def create_phone():
    """生成电话"""
    phones = [fake.phone_number() for _ in range(5)]  # 列表推导,把生成的数据组成一个列表

    return " ".join(phones)


@app.route('/phone', methods=['GET'])
def phone():
    data = create_phone()
    return data

create_phone() 函数实现生成电话号码的处理逻辑;

视图函数 phone() 则调用 create_phone() 函数 把生成的测试数据返回出去,当用户访问这个url(xxx/phone)时则会触发 phone() 函数

按照上述方式依次编写好生成身份证id、人名的逻辑代码,完整的app.py如下

 1 from flask import Flask, render_template
 2 import random
 3 import faker
 4 import emoji
 5 
 6 app = Flask(__name__)
 7 fake = faker.Faker(locale='zh_CN')  # 初始化,指定生成中文格式数据
 8 
 9 
10 @app.route('/index')
11 def index():
12     return render_template("base.html")
13 
14 
15 def create_phone():
16     """生成电话"""
17     phones = [fake.phone_number() for _ in range(5)]  # 列表推导,把生成的数据组成一个列表
18     return " ".join(phones)
19 
20 
21 @app.route('/phone', methods=['GET'])
22 def phone():
23     data = create_phone()
24     return data
25 
26 
27 def create_id():
28     """生成身份证"""
29     identity_ids = [fake.ssn() for i in range(5)]
30     return " ".join(identity_ids)
31 
32 
33 @app.route('/id', methods=['GET'])
34 def id():
35     data = create_id()
36     return data
37 
38 
39 def create_name():
40     """生成姓名"""
41     names = [fake.name() for i in range(50)]  # 生成多个
42     return " ".join(names)
43 
44 
45 @app.route('/name', methods=['GET'])
46 def name():
47     data = create_name()
48     return data
49 
50 
51 def create_text():
52     """生成一段文本"""
53     paragraph = fake.paragraphs(nb=5)  # 生成多段话
54     paragraphs = ''.join(paragraph)  # 组合成一句话
55     return " ".join(paragraphs)
56 
57 
58 @app.route('/text', methods=['GET'])
59 def text():
60     data = create_text()
61     return data
62 
63 
64 def create_special():
65     """生成特殊字符"""
66     chars1 = ['~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '-', '+', '=', ',', '<', '>', '.', '?',
67               '/', '<h1 test>',
68               '', '  ', '    ', '{', '}', '[', ']', '|', '\\', ':', '"', 'α', 'π', '', '', '', '', '', '']
69     chars2 = ['囃囄', '冁囆囇', '壅壆', '壈壌', '壍壐', '嬽嬾', '孁孂孄', '廗廘', '廙廛廜', '懚懛', '懜懝', '怼懠', '灖灗', '濲灙灚', '燿爀', '爁爂爃']
70 
71     c1 = random.sample(chars1, 20)
72     c2 = random.sample(chars2, 1)
73     return ''.join(c1) + c2[0]
74 
75 
76 @app.route('/special', methods=['GET'])
77 def special():
78     # return_dict = {'statusCode': '200', 'message': 'successful!', 'result': create_phone()}
79     # return json.dumps(return_dict, ensure_ascii=False)
80     data = create_special()
81     return data
82 
83 
84 
85 if __name__ == '__main__':
86     app.run()
View Code

相关文章:

  • 2022-12-23
  • 2021-07-08
  • 2021-11-23
  • 2021-09-24
  • 2022-12-23
  • 2021-12-22
  • 2021-11-29
猜你喜欢
  • 2021-06-06
  • 2021-07-08
  • 2022-12-23
  • 2022-12-23
  • 2021-09-13
  • 2021-11-09
  • 2021-08-26
相关资源
相似解决方案