Django 表单不呈现小部件
Django form not rendering widget
我不明白为什么 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'}),
}
出于测试目的,我将该字段重新归类为文本区域,并给它一个 class 文本应显示为红色的位置。
这是模板:
{% 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 %}
当我在浏览器中检查元素时,没有 class,它不是 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。
此外,尝试将表格更改为:
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'}),
}
我不明白为什么 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'}),
}
出于测试目的,我将该字段重新归类为文本区域,并给它一个 class 文本应显示为红色的位置。
这是模板:
{% 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 %}
当我在浏览器中检查元素时,没有 class,它不是 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。
此外,尝试将表格更改为:
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'}),
}