如何在其他函数中使用函数返回(不使用类)

时间:2016-07-10 11:09:58

标签: python django

我有一个功能:

def search_result(request):

    if request.method =='POST':
        data = request.body
        qd = QueryDict(data)
        place = qd.values()[2]
        indate = qd.values()[3]
        outdate = qd.values()[0]
        url = ('http://terminal2.expedia.com/x/mhotels/search?city=%s&checkInDate=%s&checkOutDate=%s&room1=2&apikey=%s') %(place, indate, outdate, MY_API_KEY)
        req = requests.get(url).text
        json_data = json.loads(req)

        results = []
        for hotels in json_data.get('hotelList'):
            results.append(hotels.get('localizedName'))
        return HttpResponse(results)

现在我想在其他函数中使用func1的返回来渲染这样的模板:

def search_page(request):

    r = search_result(request)
    d = r.content
    return render(request,'search.html', {'res':d})

这实际上不起作用。 有没有办法做我想要的(不使用课程)? 我从模板表单通过ajax发布帖子,我的第一个函数正常工作,并在控制台中打印结果。当我尝试在下一个函数中使用我的响应来在模板中呈现它时,会出现问题。这就是为什么我要求帮助我。您是否有任何想法可以让我的第一个功能对另一个功能可见?

1 个答案:

答案 0 :(得分:0)

您已定义request以获取request参数,但是当您在第二个函数中调用它时,您不会传递任何参数。

如果你传入HttpResponse它应该有用。

编辑:您正在寻找结果,所以我想您可以返回它们而不是def func1(request): ...... results = [] for hotels in json_data.get('hotelList'): results.append(hotels.get('localizedName')) return results def funk2(request): f = funk1(request) return render(request,'search.html', {'res':f}) (也许我们需要更多关于您要完成的内容的信息)

<script type="text/javascript">
    $('#submitContainer').click(function(){
        $('.picker').html('');
        $("textarea").each(function() {
            $(this).text($(this).val());
        });
        var content = $('#container').html();
        $('#hid').val(content);
    });
</script>