可以从另一个视图中调用一个视图吗?

发布于 2021-02-02 22:37:29

我的一个视图需要添加一个项目以及其他功能,但是我已经有另一个视图专门添加了一个项目。

我可以做类似的事情吗?

def specific_add_item_view(request):
    item = Item.objects.create(foo=request.bar)

def big_view(request):
    # ...
    specific_add_item_view(request)
关注者
0
被浏览
119
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    View函数应将呈现的HTML返回给浏览器(在中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)
        ...
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    当然,只要说完了,你的视图就会返回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")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看