在检查Postman与Localhost时,状态代码之间存在差异。以下TestCase在['This is my ', ' do you like it?']
处通过。邮递员也返回response.status_code == 200
。但是,当我使用Localhost发出200
请求时,会得到PUT
状态代码。当我在开发人员工具中检查响应时,得到404
。
我想了解是什么引起了{"detail": "Not Found"}
?
tests.py
404
views.py
class TestUpdateUserPreferences(TestCase):
@classmethod
def setUpTestData(cls):
cls.user = User.objects.create_user("Tester")
cls.credentials = b64encode(b"Mock:secret").decode("ascii")
UserPref.objects.create(
gender=["MALE"],
size=["MEDIUM", "LARGE"],
age=["BABY", "ADULT"],
user=cls.user
)
cls.updated_pref_data = json.dumps({
"gender": ["FEMALE"],
"size": ["SMALL"],
"age": ["BABY"]
})
cls.factory = APIRequestFactory()
def test_update_user_preferences_success(self):
request = self.factory.put(
reverse("user-pref-settings"),
data=self.updated_pref_data,
content_type="application/json"
)
force_authenticate(request, self.user)
response = SetUserPrefView.as_view()(request)
self.assertEqual(response.status_code, 200)
serializers.py
class SetUserPrefView(
GenericAPIView,
RetrieveModelMixin,
UpdateModelMixin):
queryset = UserPref.objects.all()
serializer_class = UserPreferenceSerializer
def get_object(self):
user = self.request.user
return get_object_or_404(self.get_queryset(), user=user)
def get(self, *args, **kwargs):
return self.retrieve(self.request, *args, **kwargs)
def put(self, *args, **kwargs):
return self.update(self.request, *args, **kwargs)
def perform_update(self, serializer):
return serializer.save(user=self.request.user)