我不是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()的方法会给我一个错误?
答案 0 :(得分:3)
render_to_response
是HttpResponse
的包装器。但是,HttpResponse
采用呈现的内容,而不是模板名称。因此,render_to_response
首先调用render_to_string
,render_to_string
中的参数为template_name
而不是 template
。
但是,为参数名添加前缀不一定是“良好做法”。良好做法是遵循惯例,惯例是不在render_to_response
中使用参数名称,context_instance
除外。
答案 1 :(得分:2)
参数名称为template_name
,而非template
。