我尝试在Django应用中使用request.POST
数据构建一个XML文档:
ElementTree.Element("occasion", text=request.POST["occasion"])
PyCharm在text
参数上给了我一个错误,说Expected type 'str', got 'Type[QueryDict]' instead
。我之所以提出PyCharm,是因为我知道它的类型检查器有时会过于热心。但是,我还没有找到任何关于这个问题的具体信息。
我做错了什么吗?或者我应该试着掩盖这个错误吗?
2条答案
按热度按时间v1uwarro1#
假设你没有发布任何不寻常的东西,比如json,
request.POST['occasion']
应该返回一个字符串,要么是字段'occasion',要么是用这个名字提交的列表的最后一个值(如果为空,则返回一个错误。使用request.POST.get('occasion')来避免)。显然有一些httprequest related issues与pycharm,但如果这是发生在这里的双重检查的方法将是打印输出和/或类型检查
request.POST['occasion']
之前,该行,以确保它返回什么。提前将
request.POST['occasion']
赋给一个变量可能是在不关闭警告的情况下删除pycharm错误的一种简单方法,这取决于您对额外代码的容忍度。k10s72fa2#
您正在尝试将类型QueryDict放入需要字符串的元素中。
以下是QueryDict的文档
如果您看一下这个QueryDict类型的文档,您会发现它基本上是一个字典。
因此,要创建XML元素,您必须执行以下操作:
这样,就有了填充了QueryDict的键和值的XML元素。