Функция Django static() для получения статического файла не дает такого файла - ошибка

Я делаю проект на Django со следующей структурой:

/project
   /cv
      /static
        /configuration
           configuration.json

Итак, проект с одним приложением в нем и файлом config.json в папке static.

Мой settings.py (самые важные настройки для этого):

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "cv",
]
STATIC_URL = "/static/"
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, "cv/static")

В моем представлении я использую функцию static() для получения статического файла

def index(request):
    file_path = static("configuration/configuration.json")
    with open(file_path) as f:
        configuration = json.loads(f.read())
    return render(request, "index.html", configuration)

Но он продолжает выдавать мне ошибку:

Нет такого файла или каталога: '/static/configuration/configuration.json'

Я могу исправить это, явно разбирая строку пути для функции index:

def index(request):
    file_path = "./cv/static/configuration/configuration.json"
    with open(file_path) as f:
        configuration = json.loads(f.read())
    return render(request, "index.html", configuration)

Но как это сделать с помощью функции static()? Функция static() использует переменную static_url, но как бы я ее не настраивал, она продолжает выдавать мне подобную ошибку.

Есть идеи, что я делаю неправильно?

Функция static() вернет URL, по которому можно получить доступ к файлу, вам это не нужно, вам нужно получить путь к файлу в файловой системе.

Соедините settings.STATIC_ROOT и файл, чтобы получить путь к файлу в файловой системе

def index(request):
    file_path = os.path.join(settings.STATIC_ROOT, "configuration/configuration.json")
    with open(file_path) as f:
        configuration = json.loads(f.read())
    return render(request, "index.html", configuration)
Вернуться на верх