#html #django #bootstrap-4 #django-templates
#HTML #django #bootstrap-4 #django-шаблоны
Вопрос:
У меня есть класс form, в котором есть несколько полей. Одним из них является поле имени и фамилии. Моя цель — изменить мою форму в моем html-файле, чтобы она могла принимать входные данные и передавать их в объект модели. Однако я хочу, чтобы это не меняло способ отображения моей формы. Проблема в том, что поля отображаются по-разному, когда я использую язык шаблонов django.
Я попытался изменить поле first name с помощью языка шаблонов django, заменив следующий загрузочный код кодом языка шаблонов django:
<div class="form-group col-md-12">
<label for="{{ form.first_name.id_for_label }}">First Name</label>
<input type="text" class="form-control" id="first_name" placeholder="Ex. John">
</div>
изменено на:
<div class="form-group col-md-12">
{{ form.first_name.label_tag }}
{{ form.first_name }}
</div>
Это не работает. Я хочу, чтобы поле имени отображалось так же, как поле фамилии. Как я могу это сделать?
Мой полный код прямо сейчас:
<div class="form-row">
{{ form.first_name.errors }}
<div class="form-group col-md-12">
<!--<label for="{{ form.first_name.id_for_label }}">First Name</label>-->
<!--<input type="text" class="form-control" id="first_name" placeholder="Ex. John">-->
{{ form.first_name.label_tag }}
{{ form.first_name }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="last_name">Last Name</label>
<input type="text" class="form-control" id="last_name" placeholder="Ex. Doe">
</div>
</div>
Ответ №1:
Вы хотите, чтобы поле имени отображалось так же, как поле фамилии, тогда вам нужно отобразить оба поля с одинаковым стилем кода.
forms.py
from django import forms
from django.core.validators import RegexValidator
class UserForm(forms.Form):
first_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': "first name"}), required=True, max_length=50, validators=[ RegexValidator('^[a-zA-Z ]*
views.py
from django.shortcuts import render
def render_form(request):
form = UserForm(request.POST or None)
return render(request, 'form.html', {'form': form})
form.html
{% for field in form %}
<div class="form-group col-md-6">
<label class="col-form-label font-weight-normal">
{{ field.label }}
{% for error in field.errors %}
<strong class="text-danger font-weight-normal" style="padding-left: 5px">*{{ error|escape }}</strong>
{% endfor %}
</label>
<div>
<input name="{{ field.name }}" class="form-control" type="text" value="{{ field.value|default_if_none:'' }}"
placeholder="{{field.field.widget.attrs.placeholder}}">
</div>
</div>
{% endfor %}
В ярлыке <div>
вы увидите ярлыки и любые ошибки, возникающие при отправке формы, а при вводе <div>
будут отображаться поля имени и фамилии с заполнителем.
Комментарии:
1. Извините, что ответил так поздно. Но что, если одна из моих входных данных - это флажок? Флажок отображается как поле ввода, когда теперь он должен быть обычным флажком
2. В принципе, как мне указать тип поля как для флажка, так и для текстового поля?
3. вы можете явно проверить из имени поля {%, если field.name == "checkbox" %} и отображать флажок из html-тегов.
4. Да! Я только что сделал это, и это работает! Спасибо за вашу помощь!
, message='Please enter only alphabetical letters')], label=u'First Name')
last_name = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'last name'}), required=True, max_length=50,validators=[RegexValidator('^[a-zA-Z ]*views.py
form.html
В ярлыке <div>
вы увидите ярлыки и любые ошибки, возникающие при отправке формы, а при вводе <div>
будут отображаться поля имени и фамилии с заполнителем.
Комментарии:
1. Извините, что ответил так поздно. Но что, если одна из моих входных данных - это флажок? Флажок отображается как поле ввода, когда теперь он должен быть обычным флажком
2. В принципе, как мне указать тип поля как для флажка, так и для текстового поля?
3. вы можете явно проверить из имени поля {%, если field.name == "checkbox" %} и отображать флажок из html-тегов.
4. Да! Я только что сделал это, и это работает! Спасибо за вашу помощь!
, message='Please enter only alphabetical letters')],label=u'Last Name')
class Meta():
fields = ['first_name', 'last_name']
views.py
form.html
В ярлыке <div>
вы увидите ярлыки и любые ошибки, возникающие при отправке формы, а при вводе <div>
будут отображаться поля имени и фамилии с заполнителем.
Комментарии:
1. Извините, что ответил так поздно. Но что, если одна из моих входных данных — это флажок? Флажок отображается как поле ввода, когда теперь он должен быть обычным флажком
2. В принципе, как мне указать тип поля как для флажка, так и для текстового поля?
3. вы можете явно проверить из имени поля {%, если field.name == «checkbox» %} и отображать флажок из html-тегов.
4. Да! Я только что сделал это, и это работает! Спасибо за вашу помощь!