#python #django #django-forms #django-views #django-templates
#python #django #django-forms #django-представления #django-шаблоны
Вопрос:
Я хочу добавить стиль в форму сброса пароля django по умолчанию, такую как классы и заполнители
В моем urls.py
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
# Password reset paths
path('password_reset/', auth_views.PasswordResetView.as_view(template_name="main/password_reset.html"),name="reset_password"),
path('password_reset_sent/', auth_views.PasswordResetDoneView.as_view(template_name="main/password_reset_sent.html"),name="password_reset_done"),
path('reset_password/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name="main/reset_password.html"),name="password_reset_confirm"),
path('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(template_name="main/reset_password_complete.html"),name="password_reset_complete"),
]
в шаблонах
<form action="" method="POST">
{% csrf_token %}
{{form}}
<input type="submit" name="Send email" class="btn btn-primary" >
</form>
Ответ №1:
да, конечно, вы можете перезаписать формы django.
# forms.py
from django.contrib.auth.forms import PasswordResetForm
class UserPasswordResetForm(PasswordResetForm):
def __init__(self, *args, **kwargs):
super(UserPasswordResetForm, self).__init__(*args, **kwargs)
email = forms.EmailField(label='', widget=forms.EmailInput(attrs={
'class': 'your class',
'placeholder': 'your placeholder',
'type': 'email',
'name': 'email'
}))
# urls.py
from .forms import UserPasswordResetForm
path('password_reset/', auth_views.PasswordResetView.as_view(
template_name='main/password_reset.html',
form_class=UserPasswordResetForm),name='password_reset'),
Комментарии:
1. Это то, что я искал, я проголосую, когда попробую, спасибо
Ответ №2:
Попробуйте использовать django-crispy-forms.
Установка
pip install django-crispy-forms
Добавьте его в свои INSTALLED_APPS и выберите стиль:
INSTALLED_APPS = [
'crispy_forms',
]
CRISPY_TEMPLATE_PACK = 'bootstrap4'
Загрузите тег
{% load crispy_forms_tags %}
Теперь вы можете стилизовать форму
{{ form|crispy }}
Комментарии:
1. я нашел это решение, но я проверяю, есть ли другой способ, который django предоставляет для этой цели без сторонних материалов, спасибо за ваш ответ
2. Я думаю, вам нужно загрузить теги crispy в шаблон
3. Я думаю, что то, что указал @SerioUs, правильно. Вы можете переопределить форму сброса пароля, обновив поле виджета.
Ответ №3:
Используйте хрустящие формы, вот хорошо объясненная статья об этом CrispyForms
Ответ №4:
Попробуйте использовать django-crispy-forms и / или django-widget-tweaks