pycharm 访问Django请求时出现类型错误,POST

li9yvcax  于 2022-12-26  发布在  PyCharm
关注(0)|答案(2)|浏览(178)

我尝试在Django应用中使用request.POST数据构建一个XML文档:

ElementTree.Element("occasion", text=request.POST["occasion"])

PyCharm在text参数上给了我一个错误,说Expected type 'str', got 'Type[QueryDict]' instead。我之所以提出PyCharm,是因为我知道它的类型检查器有时会过于热心。但是,我还没有找到任何关于这个问题的具体信息。
我做错了什么吗?或者我应该试着掩盖这个错误吗?

v1uwarro

v1uwarro1#

假设你没有发布任何不寻常的东西,比如json,request.POST['occasion']应该返回一个字符串,要么是字段'occasion',要么是用这个名字提交的列表的最后一个值(如果为空,则返回一个错误。使用request.POST.get('occasion')来避免)。
显然有一些httprequest related issues与pycharm,但如果这是发生在这里的双重检查的方法将是打印输出和/或类型检查request.POST['occasion']之前,该行,以确保它返回什么。
提前将request.POST['occasion']赋给一个变量可能是在不关闭警告的情况下删除pycharm错误的一种简单方法,这取决于您对额外代码的容忍度。

k10s72fa

k10s72fa2#

您正在尝试将类型QueryDict放入需要字符串的元素中。
以下是QueryDict的文档
如果您看一下这个QueryDict类型的文档,您会发现它基本上是一个字典。
因此,要创建XML元素,您必须执行以下操作:

occasion = request.POST.get('occasion')
ele = Element('<main name>')
# So fourth your occasion is a dict  
for key, val in occasion:
    child = Element(key)
    child.text = val
    ele.append(child)

这样,就有了填充了QueryDict的键和值的XML元素。

相关问题