无法使用 django.test.client 通过静态 url 生成静态文件

问题描述 投票:0回答:1

1.env

  • 蟒蛇:3.8.14
  • django 版本:'4.2.4'

2.目的

  • 确保静态文件已保存
  • 确保可以从网络浏览器访问静态文件

3.问题

问题是,运行

django server
后,可以通过
static file
访问
url
,但在
unitest environment
中却访问不到。

例如,假设一个文件存储在以下路径中

'MAPPER  #<- project dir  
 |-datasets #<-app name
    |-static
       |-datasets
          |-images
             |-Recursion Cellular Image Classification.jpeg

3.1 运行服务器后访问浏览器

  • 在浏览器中输入以下路径,确认是否正常。 http://localhost:8000/static/datasets/static/datasets/images/Recursion Cellular Image Classification.jpeg

3.2 单元测试

  • 获取 404 状态代码。并且无法获取图像文件
from django.test import Client
client = Client()
res_redirect = self.client.get(res.url)

4.尝试

我尝试使用

requests.get
,但没有成功
requests.get(http://localhost:8000/static/datasets/static/datasets/images/Recursion Cellular Image Classification.jpeg)

5.问题

所以这是我的问题,我如何通过

unittest env

中的 url 访问文件
python django python-unittest django-unittest
1个回答
0
投票

您需要进行 URL 编码才能正确处理 URL 中的空格。 [空格] 字符是 %20,例如,

requests.get(
    'http://localhost:8000/static/datasets/static/datasets/images/Recursion%20Cellular%20Image%20Classification.jpeg'
)

(不要忘记引号)

但是,当您使用属性或字段时,

res.url
您需要将其传递给函数以对其进行 urlEncode。由于您已经在使用
requests
,您可以使用:

#safe argument allows the / and : in http://localhost:80000 to be unencoded
encoded_url = requests.utils.quote(res.url, safe="/:")

requests.get(encoded_url) 
© www.soinside.com 2019 - 2024. All rights reserved.