我的一个视图需要添加一个项目以及其他功能,但是我已经有另一个视图专门添加了一个项目。
我可以做类似的事情吗?
def specific_add_item_view(request): item = Item.objects.create(foo=request.bar) def big_view(request): # ... specific_add_item_view(request)
View函数应将呈现的HTML返回给浏览器(在中HttpResponse)。在视图中调用视图意味着(可能)要进行两次渲染。相反,只需将“添加”分解为不是视图的另一个函数,并让两个视图都调用它。
HttpResponse
def add_stuff(bar): item = Item.objects.create(foo=bar) return item def specific_add_item_view(request): item = add_stuff(bar) ... def big_view(request): item = add_stuff(bar) ...
当然,只要说完了,你的视图就会返回HttpResponse对象。以下内容完全有效:
def view1(request): # do some stuff here return HttpResponse("some html here") def view2(request): return view1(request)
如果你不想从第一个视图返回HttpResponse,则只需将其存储到一些变量中即可忽略:
def view1(request): # do some stuff here return HttpResponse("some html here") def view2(request): response = view1(request) # do some stuff here return HttpResponse("some different html here")