Макеты Django UserCreationForm и Bootstrap Forms
Я пытаюсь расширить UserCreationForm, используя стиль компоновки Bootstrap для поля username. После тега input в форме регистрации я хотел бы добавить элемент div, как в примере, который я взял из страницы Bootstrap: т.е. предлагающий пользователю ввести то же имя пользователя, что и домен компании.
Давайте сосредоточимся на самом минимуме. Форма, адаптированная из Bootstrap, выглядит следующим образом:
<form class="row gy-2 gx-3 align-items-center method="POST" action="{% url 'register' %} ">
<div class="col-auto">
<div class="input-group">
<input type="text" name="username" class="form-control" placeholder="your.username" id="id_username">
<div class="input-group-text">@company.domain.com</div>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
Что приводит к следующему:
На данный момент я использую только {{form.as_p}} в моем файле html шаблона:
<form class="row gy-2 gx-3 align-items-center method="POST" action="{% url 'register' %} ">
{{form.as_p}}
<div class="col-auto">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
И я не знаю, как добавить часть <div class="input-group-text">@company.domain.com</div>, встроенную в блок <div class="input-group">...</div>.
Моя фактическая forms.py немного сложнее, но адаптированная для этого минимального примера она содержит следующие атрибуты виджета:
class SignupForm(UserCreationForm):
username = forms.CharField(label="",
widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'your.username'}))
class Meta:
model = User
fields = (
'username',
)
Без дополнительных библиотек есть ли способ расширить атрибуты виджета? Возможно ли вообще использовать {{form.as_p}}, как я делаю сейчас, или мне следует использовать другой метод?
Просто вы можете использовать {{ form.username }} внутри тега input в шаблоне.
Например:
<input type="text" value="{{ form.username }}">
<form class="row gy-2 gx-3 align-items-center method="POST" action="{% url 'register' %} ">
<div class="col-auto">
<div class="input-group">
<input type="text" name="username" class="form-control" placeholder="your.username" id="id_username" value="{{ form.username }}"> #Added here
<div class="input-group-text">@company.domain.com</div>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
