Python番外篇:Flask+segno 实现个人名片二维码在线生成器

499 阅读2分钟

本人已参与【新人创作礼】活动,一起开启掘金创作之路。 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:
URL
返回的内容为:
二维码
而项目的image文件夹下出现了:
image文件夹


好了,今天的课程就到这里,喜欢的可以点个收藏和关注,我是wangzirui32,我们下次再见!