Я попытаюсь объяснить шаги, которые я предпринял, чтобы попытаться решить эту проблему, чтобы вы могли лучше понять, как решить эту проблему для себя:
Во-первых, вам нужно понять, почему возникает ошибкаподнял. Это BootstrapError
не стандартная ошибка, поэтому вам нужно взглянуть на исходный код для django-bootstrap4
, чтобы понять, почему он возникает. Глядя на исходный код (просто поиск), вы обнаружите следующее:
if not isinstance(form, BaseForm):
raise BootstrapError('Parameter "form" should contain a valid Django Form.')
Попробуйте и поработайте над кодом от того места, где вы вызываете тег шаблона, до места возникновения этой ошибки (если посмотреть на трассировку, возможно,также поможет вам в этом), чтобы понять, что все различные переменные равны.
В вашем случае form
будет равен user_profile_form
, и возникает ошибка, потому что user_profile_form
не является экземпляромBaseForm
(импортировано из django.forms.forms
). Так что вы можете вернуться и посмотреть на user_profile_form
. Ну, это экземпляр UserProfileForm
, который, в свою очередь, является подклассом ModelForm
. Но ModelForm
является подклассом BaseForm
. Хм ... это кажется немного странным. Почему user_profile_form
не является экземпляром BaseForm
, когда это должно быть.
На этом этапе сначала проверьте наличие ошибок, таких как орфографические ошибки? Может быть, проверить, если ваше промежуточное программное обеспечение может играть с формой вообще. Кроме того, попробуйте упростить вещи, просто визуализируйте форму {{ user_profile_form }}
... вы обнаружите, что это не работает. Таким образом, проблема, кажется, с user_profile_form
?
Ага ... мы передали user_profile_form
шаблону в представлении, SignUp
. Но это не то представление, которое мы здесь просматриваем !!! Представление, которое мы рассматриваем, это представление UpdateAccounts
. Это generic.UpdateView
, и если мы посмотрим на документы django (всегда хорошая идея) и посмотрим на пример, мы увидим, что форма передается шаблону как просто form
.
Заменитестрока:
{% bootstrap_form user_profile_form layout='inline' %}
с
{% bootstrap_form form layout='inline' %}
В шаблоне userprofile_form.html
, и все должно работать плавно:)
Как видите, я спустилсянекоторые тупики, прежде чем я наткнулся на (возможно, более очевидное) правильное решение. Но я надеюсь, что это полезно.