Форма Django не отображает виджет
Я не могу понять, почему виджет формы django не отображается в браузере.
Это моя форма:
from django import forms
from .models import RealEstateTax
class CreateRealEstateForm(forms.ModelForm):
class Meta:
model = RealEstateTax
fields = ['invoice_number',]
widget = {
'invoice_number': forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Text goes here'}),
}
Просто в целях тестирования я переназначил поле как Textarea и присвоил ему класс, в котором текст должен отображаться красным цветом.
Это шаблон:
{% extends 'main.html' %}
{% load static %}
{% block title %} Create Realestate Tax {% endblock %}
{% block content %}
<style>
.form-control {
color: red;
}
</style>
<form method="post">
<div class="form-group">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-info">Send</button>
</div>
</form>
{% endblock %}
Когда я осматриваю элемент в браузере, нет никакого класса, это не Textarea и текст не красный:
Вот что я указал в представлении:
from realestate.models import RealEstate
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import *
from django.db.models import Sum
from realestate.models import RealEstate
from .forms import CreateRealEstateForm
def create_real_tax(request):
form = CreateRealEstateForm
if request.method == 'POST':
form = CreateRealEstateForm(request.POST)
if form.is_valid():
form.save()
print(form.base_fields)
context = {'form':form}
return render(request, 'billing/create_real_tax.html', context)
Надеюсь, вы поможете мне разобраться в этом вопросе.
Заранее большое спасибо!
Попробуйте заменить form = CreateRealEstateForm
на form = CreateRealEstateForm()
.
В настоящее время вы отображаете форму, только если запрос является POST-запросом, и просто ссылаетесь на класс, когда запрос является GET.
Дополнительно попробуйте изменить форму на:
class CreateRealEstateForm(forms.ModelForm):
class Meta:
model = RealEstateTax
fields = ['invoice_number',]
widget = {
'invoice_number': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Text goes here'}),
}
Попробуйте, пожалуйста, изменить виджет на виджеты следующего вида:
widgets = {
'invoice_number': forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Text goes here'}),
}