Я создаю веб-сайт и пытаюсь дать пользователю возможность изменить свои учетные данные. Я сделал форму для этого:
newUsername = forms.CharField(
label = "Enter your new username here*",
required=True,
widget=forms.TextInput(attrs = {
'class': 'userChangeCredentials',
'value': "{{ user.username }}"
}))
newEmail = forms.EmailField(
label = "Enter your new e-mail adress here*",
required=True,
widget=forms.EmailInput(attrs = {
'class': 'userChangeCredentials',
'value': '{{ user.email }}'
}))
newPassword = forms.CharField(
label = "Enter your new password here",
required=False,
widget=forms.PasswordInput(attrs = {
'class': 'userChangeCredentials',
'value': ''
}))
passwordConfirmation = forms.CharField(
label = "Confirm your existing password here*",
required=True,
max_length=256,
widget=forms.PasswordInput(attrs = {
'class': 'userChangeCredentials',
'value': ''
}))
Проблема в том, что значения в словаре виджетов передаются как необработанный текст, и я хочу, чтобы они были переменными.
Это результирующий макет страницы:
Нужно ли мне что-то менять внутри HTML?
Мой HTML:
<form id = "UserForm" action = "{% url 'user' name=user.username %}" method = "POST">
{% csrf_token %}
{{ form|safe }}
<input class = "userChangeCredentials" type = "submit"></input>
</form>
Я попытался сделать текст необработанным следующим образом:
widget=forms.EmailInput(attrs = {
'class': 'userChangeCredentials',
'value': r'{{ user.email }}'
})
Но это не помогло. Неделю искал, вопросов такого характера не нашел. Я читал официальную страницу формы Django, но об этом ничего нет.






В этом случае я предлагаю вам использовать форму только для учетных данных пользователя (адрес электронной почты и имя пользователя), а затем использовать встроенный PasswordChangeView для обновления пароля пользователя, даже не создавая для него класс формы.
Что касается необработанных значений, лучший способ их получить — наследовать форму от модели User.
Вы хотите, чтобы я написал вам код для приведенного выше объяснения, или он не подходит для вашей проблемы?
Я воссоздал исходную форму модели, но я до сих пор не знаю, как передать в нее значение. Если вы сможете воссоздать его в коде, это мне очень поможет, спасибо.
Больше не надо! У меня есть ответ здесь, просто простой аргумент экземпляра, где я отображаю форму. Боже мой. В любом случае большое спасибо. dev.to/earthcomfy/django-update-user-profile-33ho
Нет, это не так, возможно, это лучше, но я создал совершенно новую форму, полная строка класса здесь: ` class UserCredentialsForm(forms.Form): ` спасибо, но я не могу использовать эту идею, так как я создание совершенно новой формы...