我试图将参数列表传递给Django crispy form Tab()类。 首先,我从btn\u列表输入构建一些按钮,并尝试将其传递回helper对象。 在第一个示例中,我返回了整个Tab()对象。但是我有点困惑,为什么我不能仅仅返回Div()对象作为一个列表,然后将它们作为参数传递到helper中的Tab()对象中呢?似乎当我在助手python中使用星号时会出现语法错误。 有什么想法吗?你知道吗
def build_button_list(btn_list):#generates a list of buttons from the given input
base_fmt = 'btn btn-block '
btn_layout = []
for btn in btn_list:
btn_layout.append( Div( HTML("<b>"+btn['title']+"</b>"), \
Div(
Button('BtnProfile1', 'Persional Information', onclick="location.href='"+btn['link']+"'",
css_class=base_fmt+btn['size']+" "+btn['style']),
css_class="row",
)
)
)
return Tab('tab name', *btn_layout) #NOTICE THE ASTERISK * !!!!
class gettingStarted(forms.Form):
....
....
btn_list = [blah,blah]
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
TabHolder(
build_button_list( btn_list ), #makes a list of formatted buttons
)
)
但是,当我尝试更改布局并将Tab对象添加到gettingStarted()。init()方法而不是make_button_list()方法时,python会抱怨语法错误,并且不接受使用星号:
def build_button_list(btn_list):
base_fmt = 'btn btn-block '
btn_layout = []
for btn in btn_list:
btn_layout.append( Div( HTML("<b>"+btn['title']+"</b>"), \
Div(
Button('BtnProfile1', 'Persional Information', onclick="location.href='"+btn['link']+"'",
css_class=base_fmt+btn['size']+" "+btn['style']),
css_class="row",
)
)
)
return btn_layout
class gettingStarted(forms.Form):
....
....
btn_list = [blah,blah]
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
# SYNTAX ERROR???
Tab(
'tab name',
*build_button_list( btn_list ), #NOTICE THE ASTERISK *
),
)
谢谢!!你知道吗
好的,当传递*参数时,后面不能有逗号。我没有注意到它,一直在想,为什么当我添加星号python时,它会抱怨,当我删除它时,它不会抱怨。因此,我假设这是可怜的小星号的错,而事实上,这是我在那里留下的那个鬼鬼祟祟的逗号,考虑到星号实际作用的性质,这是有道理的:)
因此,我们要澄清的是,这一点现在正如期发挥作用:
相关问题 更多 >
编程相关推荐