Docker Django_crispy_forms raise InvalidTemplateLibrary

Я разрабатывал приложение для книжного магазина, используя Django на Docker, я создал страницу регистрации и входа, затем использовал django_crispy_forms для страницы регистрации и входа. Вот поток команд:

docker-compose exec web pipenv install django_crispy_forms==2.0.0
docker-compose down -v
docker-compose up -d --build

Последнее обновление settings.py:

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'crispy_forms', # new

    # local apps
    'users.apps.UsersConfig',
    'pages.apps.PagesConfig',
]

# django-crispy-forms
CRISPY_TEMPLATE_PACK = 'bootstrap4' # new

Но когда я проверяю журналы с:

docker-compose logs

В консоли появляется ошибка:

 raise InvalidTemplateLibrary(django.template.library.InvalidTemplateLibrary: Invalid template library specified. 
ImportError raised when trying to load 'crispy_forms.templatetags.crispy_forms_field': cannot import name 
'BoundField' from 'django.forms.forms' (/usr/local/lib/python3.10/site-packages/django/forms/forms.py)

Мой код Dockerfile:

FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

И docker-compose.yml:

version: "3.9"
services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_NAME=bookpostgresv2
      - POSTGRES_USER=bookpostgresv2
      - POSTGRES_PASSWORD=bookpostgresv2
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_NAME=bookpostgresv2
      - POSTGRES_USER=bookpostgresv2
      - POSTGRES_PASSWORD=bookpostgresv2
    depends_on:
      - db

requirements.txt:

Django>=3.0,<4.0
psycopg2>=2.8
django-crispy-forms-ng==2.0.0
pipenv==2022.3.24

Основываясь на ответе, предоставленном в 66921240, попробуйте переустановить crispy form внутри docker,

docker-compose execute <service> sh
pip install --force-reinstall --no-cache-dir django-crispy-forms

Также я заметил, что вы предоставляете нечеткую версионность для Django (от 3.0 до 4.0), возможно несовместимую с crispy-form?

Попробуйте также другой образ python (возможно, slim-buster).

Надеюсь, вы найдете решение.

Вернуться на верх