我有一些函数可以呈现一些模板,我希望每次调用它时user_id
和channel_id
都在上下文中。
将整个action
对象传递给函数是一个好习惯,还是应该将单个参数传递给像render_add_screen({'user_id': action.user.id, 'channel_id': action.channel.id})
这样的上下文?是否值得将render_add_screen
函数限制为action
对象?
@action_callback('help_monitor_controls')
def do_monitor_controls_action(action):
if action.action_value == 'add':
return render_add_screen(action)
def render_add_screen(action=None, context=None):
if not context:
context = {}
if action:
context['user_id'] = action.user.id
context['channel_id'] = action.channel.id
return combine(
render_text('screens/add/text.html', context),
render_attachments('screens/add/select_item.json', context)
)
答案 0 :(得分:2)
如果您总是要使用单个对象中的参数,那么简单地传入对象本身会使您更加清楚,不打算混合和匹配它们。
看看到目前为止你所展示的内容,更有意义的是在你的动作对象上制作一个add_to_context
方法。这可能是有些违反直觉的一些,作为add
方法通常是在收集保存对象,而不是对象中找到被添加,但是因为如果它&#39的动作已经确定,被添加至S是否有背景(通过action_value
参数),至少您将责任放在一个地方。