如何摆脱Django表单生成的标签

时间:2020-09-04 16:47:55

标签: python django

目标:只有2个输入框,顶部没有标签。
问题:使用django表单应用程序,标签会出现在输入框的顶部(参见图片)。
what the page looks like

我的models.py代码是:

from django.db import models

# Create your models here.


class Customer(models.Model):
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)

    def __str__(self):
        return self.first_name + ', ' + self.last_name 

我的0001_inital.py是

# Generated by Django 2.1.7 on 2019-11-01 19:21

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Customer',
            fields=[
                ('id', models.AutoField(auto_created=True,
                                        primary_key=True, serialize=False, verbose_name='ID')),
                ('first_name', models.CharField(max_length=200)),
                ('last_name', models.CharField(max_length=200)),
            ],
        ),
    ]

2 个答案:

答案 0 :(得分:0)

verbose_name--(django doc)设置为空字符串

A"

答案 1 :(得分:0)

您可以render the form manually [Django-doc],例如不带标签:

<form method="post" action="…">
    {{ form.non_field_errors }}
    <div>
        {{ form.first_name.errors }}
        {{ form.first_name }}
    </div>
    <div>
        {{ form.last_name.errors }}
        {{ form..first_name }}
    </div>
</form>

ModelForm中,您可以指定一个占位符,例如:

class CustomerForm(ModelForm):
    class Meta:
        model = Customer
        widgets = {
            'first_name': TextInput(attrs={'placeholder': 'First name'}),
            'last_name': TextInput(attrs={'placeholder': 'Last name'})
        }

但是最好看一下django-crisply-forms [readthedocs]这样的表单渲染器,并带有以通用方式渲染表单的逻辑。