Django render_to_response(),指定了参数名称

时间:2011-05-11 17:10:09

标签: django

我不是100%确定这是Django还是Python问题,但我认为这与Django有关。

由于我是Django世界的新手,我正在努力建立在进行函数调用时明确放下参数名称的好习惯。

对于render_to_response(),我会有以下内容:

render_to_response(template='lend_borrow/MyAccount_mod.html',
                   dictionary={'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj},
                   context_instance=RequestContext(request))

但是有了这个,我收到了一个错误,“render_to_string()得到了一个意外的关键字参数'template'”。

为了让render_to_response()在我的视图函数中工作,我不得不将其更改为

render_to_response('lend_borrow/MyAccount_mod.html',
                    {'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj},
                    RequestContext(request))

OR

render_to_response('lend_borrow/MyAccount_mod.html',
                    {'user_form': user_form, 'profile_form': profile_form, 'profile': profile_obj},
                    context_instance=RequestContext(request))

问题:为什么第一种调用render_to_response()的方法会给我一个错误?

2 个答案:

答案 0 :(得分:3)

render_to_responseHttpResponse的包装器。但是,HttpResponse采用呈现的内容,而不是模板名称。因此,render_to_response首先调用render_to_stringrender_to_string中的参数为template_name 而不是 template

但是,为参数名添加前缀不一定是“良好做法”。良好做法是遵循惯例,惯例是不在render_to_response中使用参数名称,context_instance除外。

答案 1 :(得分:2)

参数名称为template_name,而非template