使用 Django/Python 在创建临时文件的函数之外的内存中打开一个临时文件

2023-12-07

我和这个人度过了最糟糕的时光。在视图中,我创建了一个保存到内存的 csv 文件。我需要将该 csv 文件发送到 utils.py 函数并发布到外部 api。我一辈子都不知道该怎么做,这真的让我发疯。

我最初只是尝试在下面的 run_test_suite_in_hatit 函数中创建它,然后以某种方式在下面的 run_all_modal 中打开它,但这不起作用。下面发生的事情是文件 (hatit_csv_filename) 现在是一个消息对象。我不想将其作为临时保存到模型中,并且创建纯粹是为了在 HATScript() 内的 api 帖子中直接发送,该帖子位于我的项目中同一应用程序内的 utils.py 文件中。我不知道如何将文件发送到 HATScript(),这让我抓狂。

def run_test_suite_in_hatit(request):
    testrail_suite_id = int(request.GET['suite'])
    print(testrail_suite_id)
    testrail_instance = TestRailInstance.objects.first()
    project = request.user.humanresource.project
    testrail_project_id = project.testrail.project_id
    testrail_project = get_testrail_project(testrail_instance, testrail_project_id)
    testrail_suites = testrail_project.get_suites()
    testrail_suite = [s for s in testrail_suites if s.id == testrail_suite_id][0]
    testrail_cases = testrail_suite.get_cases()
    hatit_csv_filename = bulk_hatit_file_generator(testrail_cases)
    messages.add_message(request, messages.INFO, hatit_csv_filename)
    return HttpResponseRedirect('/run_all_modal/')


def run_all_modal(request):
    if request.method == 'POST':
        form = TestRunnerForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            scripts = get_messages(request)
            csvfile = ""
            for script in scripts:
                csvfile = script
            hs = HATScript()
            hs.apn = data.get('apn')
            hs.holly_server = data.get('browser')
            hs.basic_connection_test()
            response = hs.hatit_execute()
        else:
            print(form.errors)

        return JsonResponse({'success': True}) 

编辑:已解决 我一直在为此绞尽脑汁,很明显我需要做什么!

更新的视图功能:

def run_test_suite_in_hatit(request):
    testrail_suite_id = int(request.GET['suite'])
    testrail_instance = TestRailInstance.objects.first()
    project = request.user.humanresource.project
    testrail_project_id = project.testrail.project_id
    testrail_project = get_testrail_project(testrail_instance, testrail_project_id)
    testrail_suites = testrail_project.get_suites()
    testrail_suite = [s for s in testrail_suites if s.id == testrail_suite_id][0]
    testrail_cases = testrail_suite.get_cases()
    hatit_csv_filename = bulk_hatit_file_generator(testrail_cases)
    **HATScript.csvfile = hatit_csv_filename**
    return 'runner/run_all_modal.html'


def run_all_modal(request):
    if request.method == 'POST':
        form = TestRunnerForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            hs = HATScript()
            **hs.csvfile = HATScript.csvfile**
            hs.apn = data.get('apn')
            hs.holly_server = data.get('browser')
            response = hs.hatit_execute()
            print(response.status_code)
        else:
            print(form.errors)
    return redirect('runner:dashboard')

我试图发送到类中的函数并用适当的数据填充变量,但由于数据来自两个不同的视图,我对如何实现这一点感到非常困惑。我尝试过很多可笑的事情。我删除了所有专有位。

class HATScript(AutomationScript):
    def __init__(self, apn='', body='', dialed_number='',
                 holly_server='', sonus_server='',
                 hatit_server='',
                 remote_server=' ', remote_user='', remote_password=''):

        self.csvfile = ''
        self.hatit_server = hatit_server
        self.apn = apn
        self.dialed_number = dialed_number
        self.body = body
        self.filename = ''
        self.holly_server = holly_server
        self.sonus_server = sonus_server
        self.remote_server = remote_server
        self.remote_user = remote_user
        self.remote_password = remote_password

    def hatit_execute(self):
        """Uses Frank's HAT User Interface to initate a HAT test"""
        browser = requests.session()
        stuff = browser.get('http://{0}/hatit'.format(self.remote_server))
        print(stuff.status_code)
        data = {'apn': self.apn,
                'browser': self.holly_server,
                'port': '5060'}
        response = browser.post("http://{0}/".format(self.hatit_server), data=data, files={'csvfile': open(self.csvfile)})

        print(response.text)
        browser.close()
        return response

本质上,我能够在 run_test_suite_in_hatit(request) 函数中将变量分配给文件,并且必须这个问题有帮助我了解如何使用类变量并为其赋值等。这帮助我解决了我长期以来一直遇到的问题,以至于我在周六晚上开始更多地研究它。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Django/Python 在创建临时文件的函数之外的内存中打开一个临时文件 的相关文章

随机推荐

  • ELMAH 异常生成通用“服务不可用”消息

    我正在尝试创建一个可用性页面 该页面检查站点使用的所有服务 将每个检查包装在 try catch 中 然后向用户显示任何失败 其中一项服务是 ELMAH 因此我调用该服务是为了仔细检查我们是否可以成功记录错误 控制器 var a new A
  • 为什么 jquery 自动完成功能在 https(安全页面)上不起作用?

    我试图让 jquery 自动完成功能在 https 安全页面 页面上工作 但它没有显示任何下拉菜单 我搜索了这个问题 发现它的安全问题 谁能告诉我如何在 https 页面上打开此自动完成下拉列表 这是我的 jquery 自动完成代码 fun
  • 使用生成器作为子流程输入;出现“对已关闭文件进行 I/O 操作”异常

    我有一个大文件需要在输入另一个命令之前进行处理 我可以将处理后的数据保存为临时文件 但想避免这样做 我编写了一个生成器 它一次处理每一行 然后按照脚本将其作为输入提供给外部命令 但是我在第二轮循环中遇到了 关闭文件上的 I O 操作 异常
  • Oracle 高级队列 - 出队不起作用

    我似乎找不到解决问题的方法 我已经被困在这个问题上几个小时了 我正在使用 Oracle AQ Dbms Aqadm Create Queue Table Queue Table gt ITEM EVENT QT Queue Payload
  • 即使安装了 Pandas 模块也找不到

    我为此使用 anaconda 我已经使用两者下载了 pandas pip install pandas and conda install pandas 安装成功 再次安装显示已经安装 然而 当单独写这一行时 import pandas a
  • 将更多对象提取到实体中后核心数据关系丢失

    我有一个如下所示的核心数据模型 在表格视图中 我加载了所有约会 上一个UILabel在我里面custom cell我将约会地点名称设置如下 NSString info appointment location label vrij 起初一切
  • 通过将元素与先前元素的累积乘积相乘来创建列

    我有一个向量 df lt c 1000 1 02 1 03 1 04 1 01 我想创建一个新向量 其中包含 df 旧向量 中元素的累积乘积 新列应该看起来像 b lt c 1020 1050 6 1092 64 1103 5 基本上 新向
  • 从另一方收到不安全或不正确安全的故障

    我有一个调用 WCF 服务的 Windows 程序 该服务几次后会变得非常慢 最终会遇到此错误 再次重启后服务再次启动 真挚地 您可能没有关闭与 WCF 服务的连接 WCF 默认有 10 个连接 超时为一分钟 然后发生的事情是前 10 个点
  • 动态更改自动布局

    我必须显示 3 个标签 例如 标签1 标签2 标签3 Horizontally 我想要这 3 个标签的宽度是根据屏幕尺寸宽度均分 如何直接使用 nib 文件实现此目的 Thanks 问题2 标签1 标签2 标签3 所有标签宽度相等 所有La
  • 找不到引用的源:包

    我有这个 pubspec yaml name Dart Pages description The Dart platform dependencies web components any mongo dart any 然后我运行 工具
  • 与计算机同步互联网时间

    所以我制作了一个具有许可证检查功能的程序 该程序仅适用于有限数量的受信任的人 所以我知道他们不会尝试篡改它 我想要做的是将计算机时钟与互联网时间 例如 time windows com 或任何受信任的时间 同步 如果计算机时钟与互联网不匹配
  • 有适用于 GIT 的 PHP api 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道是否有任何API或东西可以让php与GIT交互 我想在网页上打印有关分支 存储库等的信息 这可能吗 快速搜索就会找到一个 github 项目
  • 循环删除工作表

    您能告诉我为什么每隔一张工作表都会被删除 但是如果我关闭 worksheets delete 行 消息框中会显示所有工作表名称 Sub tor Dim wsz As Integer wsz Application Worksheets Co
  • TCL 数组最大大小

    我正在开发一个工程应用程序 界面是用TCL TK编写的 一切都很顺利 直到我需要使用一个 非常 大的数组 370 000 000 个元素 每个元素长度为 2 到 10 个字符 线性增长 我的问题是 TCL 阵列的大小限制在哪里 我一直在阅读
  • 使用基于注释的配置创建延迟初始化的 Spring bean

    我正在使用Spring的 Component注释来配置我的 Spring 3 0 应用程序中的许多 bean 我想知道是否可以懒惰地构建其中一些豆子 尤其是prototype beans 要声明延迟初始化的 bean 您可以使用 Lazy注
  • C++ 使用 for 循环反向打印字符串

    我有一个程序 使用 for 循环打印出字符串的字符 它还必须反向打印相同的字符 这就是我遇到问题的地方 有人可以帮我弄清楚为什么第二个 for 循环没有执行吗 int main string myAnimal cout lt lt Plea
  • 将 LineGeometry 与 EllipseGeometry 组合(在代码中,而不是 XAML)

    我正在尝试使用 WPF 创建自定义形状 对于初学者来说 我只是想创建一条简单的线 两端都有一个圆圈 我知道有 LineCaps 但这不是我要找的 我研究了一些教程 最简单的方法似乎是使用CombinedGeometry 但是我无法让它正常工
  • 停止和重置 NSTimer

    我有一个简单的计时器 按下按钮即可激活它 它从 60 运行到 0 没问题 但我想要的是停止并重置按钮上的计时器 我已经设法使用下面的代码在按下按钮时停止它 但由于某种原因无法让它重置并停止在 60 处 这应该很简单 但它不起作用 有什么建议
  • 如何在 WinRT 中的按钮中将文本放置在图像上

    我想创建一个使用图像作为背景的按钮 并在背景之上放置我的文本 我尝试过这样的事情
  • 使用 Django/Python 在创建临时文件的函数之外的内存中打开一个临时文件

    我和这个人度过了最糟糕的时光 在视图中 我创建了一个保存到内存的 csv 文件 我需要将该 csv 文件发送到 utils py 函数并发布到外部 api 我一辈子都不知道该怎么做 这真的让我发疯 我最初只是尝试在下面的 run test