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).
Надеюсь, вы найдете решение.