AttributeError:“ WindowsPath”对象没有属性“ endswith”

时间:2020-11-04 06:43:58

标签: python django

当我运行项目时,会出现此错误。

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\site-packages\django\core\management\commands\runserver.py", line 118, in inner_run
    self.check(display_num_errors=True)
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\site-packages\django\core\management\base.py", line 396, in check
    databases=databases,
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\site-packages\django\core\checks\registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\site-packages\django\contrib\staticfiles\checks.py", line 9, in check_finders
    finder_errors = finder.check()
  File "C:\Users\Mowgli\anaconda3\envs\surajDjangoEnv\lib\site-packages\django\contrib\staticfiles\finders.py", line 81, in check
    if prefix.endswith('/'):
AttributeError: 'WindowsPath' object has no attribute 'endswith'

3 个答案:

答案 0 :(得分:0)

“”“ learning_user项目的Django设置。

由“ Django-admin启动项目”使用Django 3.1.1生成。

有关此文件的更多信息,请参见 https://docs.djangoproject.com/en/3.1/topics/settings/

有关设置及其值的完整列表,请参见 https://docs.djangoproject.com/en/3.1/ref/settings/ “”“

从pathlib导入路径

像这样在项目内部构建路径:BASE_DIR /'subdir'。

答案 1 :(得分:0)

此错误是由于静态文件的配置而发生的

尝试一下:

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    BASE_DIR / "static",
]

STATIC_ROOT = BASE_DIR / "staticfiles"

MEDIA_URL = "/media/"

MEDIA_ROOT = BASE_DIR / "media"

您不必使用os模块,这不是必需的。您的settings.py文件中已定义BASE_DIR。

STATICFILES_DIRS用于部署。如果需要,可以暂时将其删除。

click for detailed explanation

答案 2 :(得分:0)

您可以使用属性 parts 获取 WindowsPath 对象的一部分。选择最后一部分并使用 endswith 属性。

import pathlib
import os

path_to_here = pathlib.Path(os.getcwd())
last_part = path_to_here.parts[-1]
print(last_part.endswith('ending'))