Django — настройка формы, в частности, как выглядят поля

#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. Да! Я только что сделал это, и это работает! Спасибо за вашу помощь!