Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django';s URL调度程序未提取kwargs_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django';s URL调度程序未提取kwargs

Python Django';s URL调度程序未提取kwargs,python,django,django-rest-framework,Python,Django,Django Rest Framework,我以前在Django中多次配置url模式。 突然它不起作用了,我不知道为什么 我正在使用Django REST框架,并且正在使用Django的RequestFactory测试API。 这是我的URL模式: url(r'^samples/(?P<sha256>\w+)/?$', endpoints.SampleAPI.as_view()) 这就是我想做的: class SampleAPI(APIView): def get(self, request: Request, *a

我以前在Django中多次配置url模式。
突然它不起作用了,我不知道为什么

我正在使用Django REST框架,并且正在使用Django的RequestFactory测试API。
这是我的URL模式:

url(r'^samples/(?P<sha256>\w+)/?$', endpoints.SampleAPI.as_view())
这就是我想做的:

class SampleAPI(APIView):
    def get(self, request: Request, *args, **kwargs) -> Response:
        sha256 = self.kwargs.get('sha256', None)
URL得到解析,我进入了方法,但出于某种原因,
sha256
总是
None
kwargs
字典总是空的!)。
奇怪的是,我在另外两个我正在开发的服务中做了完全相同的事情(关键字参数只有另一个名称),它们都能工作

你们看到我在这里遗漏了什么吗


编辑:更新了帖子,显示了我是如何测试URL的

好吧,我没有想到这是一个愚蠢的错误

我不应该在测试中使用
RequestFactory
,因为参数不会以这种方式传递到视图。
正确的方法是使用Django的测试
客户端

from django.test import Client
client = Client()
response = client.get('/samples/somehash')

很抱歉这里的新手错误。

在kwargs之前点击
self
,然后再试一次。我用
Django 1.9.2
djangorestframework 3.6.3
Python 3.5.3
在本地测试了这一点,它对
kwargs
self.kwargs
都有效。您确定此url已解析为
SampleAPI
?你有没有试着把一些
print()
pdb
放在
get()
中?@Melvyn也一样result@Kamil它确实解决了SampleAPI问题,我已经调试过了,没问题。这也说明了为什么我们都没有遇到这个问题。您提到了请求工厂,但我怀疑有多少人将其链接到django.test包,只是假设(和我一样)它是一个以合理的方式生成Http请求的包:)
from django.test import Client
client = Client()
response = client.get('/samples/somehash')