我正在开发一个快速的URL缩短器,它也为相同的缩短的URL返回svg版本的QR码。我正在使用flask和python
我在flask中创建了一条特定的路由来提供文件并通过send_file返回文件以供下载,该文件在根目录中创建(我稍后将需要修复此问题,但这是另一个问题)并且位于其中,但是当我单击前面的链接时,flask默认为404。
这是下载路径:
@short.route('/<qr_file>')
def download(qr_file):
return send_file(qr_file, as_attachment=True)
这是add_link路由(创建链接,提交到db,创建qrcode,存储它,将短而原始的url返回到模板以及要下载链接的qr_file位置)
@short.route('/add_link', methods=['POST'])
def add_link():
original_url = request.form['original_url']
link = Link(original_url=original_url)
db.session.add(link)
db.session.commit()
qr_url = pyqrcode.create(link.short_url)
qr_file = link.short_url + '.svg'
qr_url.svg(qr_file, scale = 8)
return render_template('link_added.html',
new_link=link.short_url, original_url=link.original_url, qr_file=qr_file)
这是link_added.html中的相关内容:
<div class="field">
<label class="label">New URL</label>
<div class="control">
<input class="input" type="text" name="original_url" value="{{ url_for('short.redirect_url_to_url', short_url=new_link, _external=True) }}">
</div>
</div>
<div class="field">
<label class="label">QR Code</label>
<a href="{{ qr_file }}"> {{ qr_file }} </a><br>
<img src="{{ qr_file }}" height="90" width="106" /><br>
</div>