本人已参与【新人创作礼】活动,一起开启掘金创作之路。
hello,我是wangzirui32,今天来教大家如何Flask框架和segno模块实现个人名片二维码在线生成器。
开始学习吧!
1. 项目架构
image文件夹为空,templates下存储了2个模板。
2. 模块准备
首先,你需要安装Flask(那当然了!),接着,安装segno模块:
pip install segno
关于segno的使用请参照我的这篇博文。
3. app.py编写
代码:
from flask import Flask
from flask import render_template, send_file, request
import time
# 导入生成个人二维码的函数
from segno.helpers import make_mecard
# 创建项目
app = Flask(__name__)
app.config['SECURE_KEY'] = 'f89y2yf9832duicskaxh21pueo11d'
# 制作二维码的函数
def make_qr(name, email, phone, birthday, city):
qr = make_mecard(name=name, # 姓名
email=email, # 电子邮箱
phone=phone, # 电话
birthday=birthday, # 生日
city=city) # 居住城市
filename = str(int(time.time())) + ".png" # 将时间戳设置为文件名
# 保存 设置每个点的大小为10像素
qr.save("image/" + filename, scale=10)
# 返回文件名
return filename
@app.route("/")
def index():
"""个人名片二维码在线生成器主页"""
return render_template("index.html")
@app.route("/make", methods=['POST'])
def make():
"""制作二维码 并返回生成成功提示 仅支持POST请求"""
# 获取表单信息
name = request.form.get('name')
email = request.form.get('email')
phone = request.form.get('phone')
birthday = request.form.get('birthday')
city = request.form.get('city')
# 制作二维码 并返回文件名
filename = make_qr(name, email, phone, birthday, city)
return render_template("make.html", your_name=name, filename=filename)
@app.route("/qr_image/<filename>")
def qr_image(filename):
"""获取二维码的URL"""
return send_file("image/" + filename)
if __name__ == "__main__":
app.run(port="5000", host="127.0.0.1")
4. HTML模板
4.1 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>个人二维码在线生成器</title>
</head>
<body>
<h1>个人二维码在线生成器</h1>
<!-- 个人信息表单 -->
<form action="/make" method="POST">
<h4>请输入你的姓名:<input name="name" placeholder="你的姓名" /></h4>
<h4>请输入你的电子邮箱地址:<input name="email" placeholder="你的电子邮箱地址" /></h4>
<h4>请输入你的手机号:<input name="phone" placeholder="你的手机号" /></h4>
<h4>请输入你的生日(yyyy-mm-dd):<input name="birthday" placeholder="你的生日" /></h4>
<h4>请输入你的居住城市:<input name="city" placeholder="你的居住城市" /></h4>
<input type="submit" value="提交" />
</form>
</body>
</html>
4.2 make.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>生成成功提示</title>
</head>
<body>
<h3>{{your_name}} ,您的个人名片二维码已经生成完毕!</h3>
<h3>预览图:</h3>
<img src="/qr_image/{{filename}}" alt="{{your_name}}的个人二维码"/>
<h3><a href="/qr_image/{{filename}}">点击链接下载</a></h3>
</body>
</html>
5. 结果展示
运行app.py,打开127.0.0.1:5000,输入相关信息:
点击“提交”:
进入“点击链接下载”页面的URL:
返回的内容为:
而项目的image文件夹下出现了:
好了,今天的课程就到这里,喜欢的可以点个收藏和关注,我是wangzirui32,我们下次再见!