python – Flask-admin在文本字段旁边创建一个按钮
作者:互联网
我使用Flask-admin创建了一个简单的表单,如下所示.我现在正在考虑在API文本字段旁边创建一个刷新按钮,但现在不是真的如何.
这被称为小部件或内联模型吗?我无法在WTForms中找到我可以使用的按钮.非常感谢这方面的任何例子,因为我已经能够覆盖文本字段,但不能以简单的方式将其他元素放在它旁边.
class AdministratorView(sqla.ModelView):
page_size = 10
column_searchable_list = (
'username',
'description'
)
column_list = (
'username',
'apikey',
'description',
'active'
)
column_exclude_list = list = (
'apikey',
'auth_type'
)
form_excluded_columns = (
'auth_type',
'photos'
)
column_labels = {
'apikey': 'API Key'
}
form_widget_args = {
'apikey':{
'readonly':True
}
}
form_create_rules = (
rules.FieldSet(('username', 'password', 'description'), 'Personal'),
rules.FieldSet(('roles', 'apikey', 'active'), 'Permission'),
)
form_edit_rules = (
rules.FieldSet(('username', 'description'), 'Personal'),
rules.FieldSet(('roles', 'apikey', 'active'), 'Permission'),
rules.Header('Reset password'),
rules.Field('new_password')
)
def get_create_form(self):
form = self.scaffold_form()
form.username = fields.StringField('Username', [validators.Required()])
form.password = fields.PasswordField('Password', [validators.Required()])
return form
def get_edit_form(self):
form = self.scaffold_form()
delattr(form, 'password')
form.new_password = fields.PasswordField('New Password')
return form
def on_model_change(self, form, model, is_created):
if is_created is False:
if form.new_password.data:
model.password = generate_password_hash(form.new_password.data)
def is_accessible(self):
if login.current_user.is_authenticated:
return login.current_user.has_role('admin')
编辑:我可以添加一个新的元素,如header / h1添加一个像这样的html文件:
{% extends 'admin/model/edit.html' %}
{% block body %}
<h1>My custom header</h1>
{{ super() }}
{% endblock %}
但是,我无法弄清楚如何更改渲染表单中的特定字段.看看edit.html所有我能看到的是以下内容.如何“进入”rendered_form并添加我的自定义按钮?
{% block edit_form %}
{{ lib.render_form(form, return_url, extra(), form_opts) }}
{% endblock %}
解决方法:
只需使用lib.render_form_fields函数渲染普通字段并将按钮添加到所需的位置即可.您可以将render_form_fields与多个字段一起使用,因此您无需重写整个模板.
这是flask-admins layout_bootstrap3示例的修改版本,它将按钮放在名称字段附近:
{% extends 'admin/model/edit.html' %}
{% block brand %}
<h2 id="brand">Edit {{ admin_view.name|capitalize }}</h2>
<div class="clearfix"></div>
<hr>
{% endblock %}
{% block body %}
{% call lib.form_tag(form) %}
<div class="row">
<div class="col-xs-10">
{{ lib.render_form_fields([form.name])}}
</div>
<div class="col-xs-2">
<a href="#" class="btn btn-default">Testbutton</a>
</div>
</div>
<div class="row">
<div class="col-xs-10">
{{ lib.render_form_fields([form.email])}}
</div>
</div>
<div class="form-buttons">
{{ lib.render_form_buttons(return_url) }}
</div>
{% endcall %}
{% endblock %}
标签:python,flask-admin 来源: https://codeday.me/bug/20190701/1352035.html