我构建了一个Web应用程序,其中后端是使用Django REST Framework实现的.现在我正在编写单元测试,我在测试序列化方法方面遇到了问题.这是我正在努力解决的序列化方法的一个例子:
def get_can_edit(self, obj):
request = self.context.get('request')
user = User.objects.get(username=request.user)
return user == obj.admin
Run Code Online (Sandbox Code Playgroud)
当试图从测试中调用它时,首先我声明一个序列化器的实例:
self.serializer = ConferenceSerializer()
Run Code Online (Sandbox Code Playgroud)
但现在我需要self.serializer的时候有正确的请求get_can_edit呢self.context.get('request').我使用RequestFactory创建了一个包含正确信息的虚假请求:
self.request1 = RequestFactory().get('./fake_path')
self.request1.user = self.user1
Run Code Online (Sandbox Code Playgroud)
现在我卡住了,因为我不能确定如何添加request1到serializer这样self.context.get('request')会返回request1.
谢谢.
我是 .NET 框架的新手,并且在界面方面遇到问题Microsoft.AspNetCore.Http.HttpRequest。我正在尝试使用GetDisplayUri扩展,但它返回无效的 URI。后来我将 URI 传递给System.Uri.CreateThis()并抛出以下异常:
System.UriFormatException: Invalid URI: The format of the URI could not be determined.
Run Code Online (Sandbox Code Playgroud)
该GetDisplayUri方法应该根据 中的字段创建一个 URL HttpRequest,但我无法弄清楚 URL 的哪些部分位于哪些字段中,而且我在网上找不到任何相关示例。我特别想知道应该如何将 URL 分解为Path、PathBase和QueryString变量。
例如,假设我想构建 URL "http://example.com/route/endpoint?foo=bar"。我很确定我的QueryString只是"?foo=bar",但我不知道如何将 URL 的其余部分分解为其他字段。另请告诉我,除了我提到的三个相关字段之外,是否还有其他字段与 相关GetDisplayUri。
如果有任何不清楚的地方请告诉我。