首页 > 解决方案 > 自定义转换器未通过列表

问题描述

我想做的是使用使用 werkzeug.routing 基本转换器制作的自定义转换器,通过内置的烧瓶函数渲染和 url_for 将作为列表的数据发送到另一个函数。
后端.py:

from flask import *
from flaskext.mysql import MySQL
from werkzeug.routing import BaseConverter
mysql = MySQL()
application = Flask(__name__)
class ListConverter(BaseConverter):
    def to_python(self, value):
        return value.split('+')

   def to_url(self, values):
        return '+'.join(BaseConverter.to_url(value)
                        for value in values)

application.url_map.converters['list'] = ListConverter
@application.route('/reportsscr',methods=["POST"])
def reportsscr():
        results = [1,2,3,4,5,6,7]
        return redirect(url_for('reportsview',value =results))

并在另一个文件
Main.py中调用它

from backend import *
@application.route('/view/<list:value>')
def reportsview(value):
    return str(value)

这是我得到的错误快照: 错误

标签: pythonflaskredirecturl-routing

解决方案


我通过谷歌搜索找到了一些如何做到这一点的例子。我认为您可能需要调整您的 to_url 函数。

class ListConverter(BaseConverter):
    def to_python(self, value):
        return value.split('+')

   def to_url(self, value):
#change values to value, get super to_url function
        base_to_url = super(ListConverter, self).to_url
        return '+'.join(base_to_url(x)
                        for x in value)

推荐阅读