Django的URL Dispatcher没有提取kwargs

时间:2017-06-28 18:20:48

标签: python django django-rest-framework

之前我在Django中已经配置了很多次url模式 突然间它不能正常工作,我不明白为什么......

我正在使用Django REST Framework,并且我正在使用Django的RequestFactory测试API。
这是我的网址格式:

url(r'^samples/(?P<sha256>\w+)/?$', endpoints.SampleAPI.as_view())

这是我测试GET请求的方式:

from django.test import RequestFactory
factory = RequestFactory()
request = factory.get('/samples/somehash')
response = endpoints.SampleAPI.as_view()(request)

这就是我想要做的事情:

class SampleAPI(APIView):
    def get(self, request: Request, *args, **kwargs) -> Response:
        sha256 = self.kwargs.get('sha256', None)

网址已解析,我会进入该方法,但出于某种原因,sha256始终为Nonekwargs字典始终为空!)。
奇怪的是,我在我开发的其他两个服务中做了完全相同的事情(关键字参数只有另一个名称),而且工作

你们有没有看到我在这里失踪的东西?

编辑:更新帖子以显示 我测试了网址

1 个答案:

答案 0 :(得分:0)

好吧,这是一个我没想过的愚蠢的错误。

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

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

对不起这里的新手错误。