我认为我没有看到任何说你不允许这样做的事(或你的确是这样),但你有什么理由不应该这样做吗?它似乎工作正常。
def get_page(request, topic_slug = 'home', tag_slug = None, form = None):
#...
if form is None:
form = CommentForm()
d = {'topic':topic, 'topics':topics, 'tags':tags, 'comments':comments, 'form':form}
d.update(csrf(request))
return render_to_response('page.html', d)
def save_comment(request, topic_slug):
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
#...save
else:
kwargs = {'topic_slug':topic_slug}
kwargs['form'] =form
return get_page(request, **kwargs) #<-------------- this
return HttpResponseRedirect(reverse('get_page', kwargs = {'topic_slug':topic_slug}))
答案 0 :(得分:1)
render_to_response
只是一个捷径。调用它的结果仍然是HttpResponse
的实例。
作为证据,请参阅Django源代码中的render_to_response()
声明:
def render_to_response(*args, **kwargs):
"""
Returns a HttpResponse whose content is filled with the result of calling
django.template.loader.render_to_string() with the passed arguments.
"""
httpresponse_kwargs = {'mimetype': kwargs.pop('mimetype', None)}
return HttpResponse(loader.render_to_string(*args, **kwargs),
**httpresponse_kwargs)
非常不言自明。
写下这个:
return get_page(request, **kwargs)
你实际上做了类似的事情:
return render_to_response(request, kwargs)
(但稍微修改了kwargs
参数)。