【问题标题】:How to Post a List in Django Tests如何在 Django 测试中发布列表
【发布时间】:2020-07-13 21:31:18
【问题描述】:

我有一个 AJAX 发布到项目列表的视图。我正在尝试为此添加测试。

如何在 django 测试中发布列表?我通过这个命令检索数据:

listVar = request.POST.getlist('list[]')

我知道这会正确接收一个列表,因为我与 Jquery 交互并且它返回正确的列表,但是我如何才能做到这一点是 python? 我一直在尝试这样的代码,但是打印“listVar”总是会产生一个空列表:

form = {"list": ["element 1", "element 2"]}
response = self.client.post('/viewurl/', form, follow=True)

编辑--- @Tomek 建议删除“[]”,但这会导致 python 发布请求工作,但我的 ajax 上传返回一个空列表。

这是我的 ajax 代码的 sn-p:

$.ajax({
        url: window.location.pathname,
        method: 'POST',
        data: {
            list: a_list_I_create_elsewhere
        },
...

【问题讨论】:

    标签: python django list testing post


    【解决方案1】:

    只需将[] 放在getlist 参数中即可。

    def request_handler(request):
        listVar = request.POST.getlist('list')
        print(listVar)
    

    应该工作

    编辑 不要破坏与 jQuery 的兼容性。我想我会根据jQuery格式测试

    form = {"list[]": ["element 1", "element 2"]}
    response = self.client.post('/viewurl/', form, follow=True)
    

    【讨论】:

    • 对不起,我没有说清楚,这会破坏我的 AJAX 上传,这是视图的主要目的
    • 是的,我刚刚注意到了变化。我想我会考虑在你的情况下更改单元测试
    • 哦,我明白了,因为 [] 是在 AJAX 中自动添加的。谢谢
    猜你喜欢
    • 2016-06-10
    • 2018-09-20
    • 2017-02-27
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多