gpt4 book ai didi

flask - 使用 Flask-Admin 自定义 ListView

转载 作者:行者123 更新时间:2023-12-03 15:50:08 26 4
gpt4 key购买 nike

我有一个简单的模型调用,我正在使用 Flask-Admin 创建/编辑/删除该模型的实例。

Call 字段之一是音频文件的路径。我希望能够通过添加一些 html 代码在管理员中播放文件。我查了模板 flask_admin/templates/bootstrap3/admin/model/list.html似乎唯一的方法是在行的末尾添加一个单元格,这意味着扩展 list.html,复制整个块 list_row并添加我的单元格。

这是唯一的方法吗?或者有什么方法可以用我的音频播放器(基本上是 html5 )在表单中添加一个“假”字段?

flask_admin/templates/bootstrap3/admin/model/list.html

....

{% for c, name in list_columns %}
<td class="col-{{c}}">
{% if admin_view.is_editable(c) %}
{% if form.csrf_token %}
{{ form[c](pk=get_pk_value(row), value=get_value(row, c), csrf=form.csrf_token._value()) }}
{% else %}
{{ form[c](pk=get_pk_value(row), value=get_value(row, c)) }}
{% endif %}
{% else %}
{{ get_value(row, c) }}
{% endif %}
</td>
{% endfor %}
<td>ADD MY CUSTOM CELL HERE?</td>
....

模型.py
class Call(db.Model):
__tablename__ = 'calls'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(64))
path = db.Column(db.Unicode(128))

def __unicode__(self):
return self.name

最佳答案

使用 column_formatters 有一种更简单的方法:

from flask import Markup

class CallView(sqla.ModelView):
def _mp3_formatter(view, context, model, name):
return Markup('<a href="{}">{}</a>'.format(url_for('path_to_mp3_view', filename=model.path), model.name)
column_formatters = {
'path': _mp3_formatter
}

或者你甚至可以传递一个 Jinja2 宏(它必须存在于覆盖模板中):
class CallView(sqla.ModelView):
column_formatters = dict(path=macro('render_path_mp3'))

在模板中:
{% macro render_path_mp3(model, column) %}
<a href="{{ url_for('path_to_mp3_view', filename=model.path) }}">{{ model.name }}</a>
{% endmacro %}

创建自定义 View 函数 path_to_mp3_view已被排除在练习之外.. ;)

关于flask - 使用 Flask-Admin 自定义 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31691462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com