擅长:python、mysql、java
<p>首先你必须明白这是一个警告,而不是错误。</p>
<p>其次:Django传递给视图的每个参数(除了<code>request</code>)都是从URL中提取的,定义见<code>urlpatterns</code>。Django正在基于类的视图中内部使用<code>*args</code>和<code>**kwargs</code>,因此您可以传递任何参数,而无需重写<code>dispatch</code>方法。</p>
<p>回到我们的警告:这个警告是由许多静态代码分析工具(包括PyCharm中内置的一个)发出的,以通知您这里可能有问题,因为原始的分派方法具有不同的签名。这并不意味着这是错误的,这就是为什么总是有选项在选定的代码行上禁用这些警告。当然,你应该看看你的编辑提出的每一个警告,但这并不意味着每一个警告都应该被修正。</p>
<p>当然,您可以使用以下方法修复它:</p>
<pre><code> def dispatch(self, request, *args, **kwargs):
id = args[0] # or id = kwargs['id'] if it is passed as keyword argument
self.course = get_object_or_404(Course, id=pk, owner=request.user)
return super(CourseModuleUpdateView, self).dispatch(request, pk)
</code></pre>
<p>但你也可以忽略这一点,按原样使用。您的使用有一些好处,例如在方法调用上自动验证所有必需的参数都已通过。使用默认方法签名(如上所述)不会在编辑器中引发警告。由你来决定哪个更好。</p>