我有一个Django View,它使用查询参数进行一些内容过滤.像这样的东西:
/page/?filter=one+and+two
/page/?filter=one,or,two
Run Code Online (Sandbox Code Playgroud)
我注意到Django将其转换+为空格(request.GET.get('filter')返回one and two),我就可以了.我只需要相应地调整split()我在View中使用的功能.
但...
当我尝试测试此视图时,我打电话给:
from django.test import Client
client = Client()
client.get('/page/', {'filter': 'one+and+two'})
Run Code Online (Sandbox Code Playgroud)
request.GET.get('filter')返回one+and+two:加号,没有空格.为什么是这样?
我想认为这Client().get()模仿了浏览器的行为,所以我想了解的是为什么调用client.get('/page/', {'filter': 'one+and+two'})不像浏览/page/?filter=one+and+two.出于测试目的,它在我看来应该是相同的,并且在两种情况下,视图应该为过滤器接收一致的值:be with with +或with space.
我没有得到的是为什么有两种不同的行为.
因此AWS将空格转换+为存储桶/文件 URL。但是其中已有的文件名+被编码为%2B. 我很困惑如何处理这个案子。
当应用程序的输入 URL 为:
https://s3-us-west-2.amazonaws.com/mybucket/Pul0419_32_a+b.zip
Run Code Online (Sandbox Code Playgroud)
我如何确定实际存在的文件是Pul0419_32_a+b.zip还是Pul0419_32_a b.zip