18910140161

Python-水平而不是垂直显示Flask WTForms字段-堆栈溢出

顺晟科技

2022-10-18 12:24:37

179

我的Flask Web应用程序使用WTForms来显示具有两个SelectFields的表单。该窗体是从WTFormsform.Form类继承的自定义窗体。我还有一个从Flask-Admin导入的BaseView.用户输入由几个SelectField(来自wtforms.fields)组成,它们都垂直堆叠在彼此的顶部。有没有一种方法可以水平显示SelectFields,使<!--form.html--> {% import "admin/lib.html" as lib with context %} {% block head_tail %} <!--other stuff--> {% endblock %} {% block subheader %} { <form method="GET"> {{ lib.render_form_fields(form)}} </form> {% endblock %} {% block body %} <!--other stuff--> {% endblock %} {% block tail %} <!--other stuff--> {% endblock %} 位于field1的左侧,而不是在field1得上方?谢谢.

当前代码(为清晰起见,已编辑):

# form.py

from flask_admin import BaseView
from wtforms import form
from wtforms.fields import SelectField

class FormA(form.Form):
    field1 = SelectField(choices=[('A', 'Choice A'), ('B', 'Choice B')])
    field2 = SelectField(choices=[('C', 'Choice C'), ('D', 'Choice D')])
   
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

class ViewA(BaseView):
    @expose('/', methods=('GET',))
    def index(self):
        form = FormA()
        return self.render('admin/form.html', form=form)

form.html文件中,我正在导入flask-admin并创建表单:

<代码><;!--FORM.HTML-->;{%import";admin/lib.HTML";作为具有上下文%}的库{%block head_tail%}<;!--其他内容-->;{%ENDBLOCK%}{%块副标题%}{<;表单方法=";获取";>;{{lib.render_窗体_字段(窗体)}}<;/窗体>;{%ENDBLOCK%}{%块主体%}<;!--其他内容-->;{%ENDBLOCK%}{%块尾%}<;!--其他内容-->;{%ENDBLOCK%}

现在,<!--form.html--> {% import "admin/lib.html" as lib with context %} {% block head_tail %} <!--other stuff--> {% endblock %} {% block subheader %} { <form method="GET"> {{ lib.render_form_fields(form)}} </form> {% endblock %} {% block body %} <!--other stuff--> {% endblock %} {% block tail %} <!--other stuff--> {% endblock %} field1是垂直堆叠的,但我希望它们并排显示。有办法做到吗?谢谢.


顺晟科技:

您可以使用CSS定位表单并设置field2

你可以给你的表格一个ID:

<代码><;表单ID=";我的表单";方法=";获取";>;{{lib.render_窗体_字段(窗体)}}<;/窗体>;

然后使用CSS来定位它,如下所示:

display: flex

或者,如果您不希望整个窗体都将<form id="myform" method="GET"> {{ lib.render_form_fields(form)}} </form> 设置为#myform { display: flex; } ,则可以使用一个DIV将display,并在此DIV上设置display:flex

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航