首页 > 解决方案 > Django中基于类的视图中的样式表单字段

问题描述

我正在使用基于类的视图在网站上创建表单。到目前为止,下面的代码正在运行。但我需要在box-message该字段中添加一个自定义 CSS 类 (),message以便正确设置样式。我怎样才能做到这一点?

这是我迄今为止所取得的成就。

# view.py ----

from django.views.generic.edit import CreateView
from .models import CandidateInfo

class PostForm(forms.ModelForm):
    class Meta:
        model = CandidateInfo
        fields = ("name", "email", "message")

class ContactView(CreateView):
    form_class = PostForm
    model = CandidateInfo
    template_name = "index_test.html"


# models.py ----

from django.db import models
from django.urls import reverse


class CandidateInfo(models.Model):
    name = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    message = models.TextField()

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("index_text")

和模板:

<form id="contact-us" action="" method="post">{% csrf_token %}

{{ form.as_p }}

<input type="submit" name="submit" id="contact-button" value="Send" />

这是生成的 HTML:

<p><label for="id_name">Name:</label> <input type="text" name="name" maxlength="200" required="" id="id_name"></p>
<p><label for="id_email">Email:</label> <input type="text" name="email" maxlength="200" required="" id="id_email"></p>
<p><label for="id_message">Message:</label> <textarea name="message" cols="40" rows="10" required="" id="id_message"></textarea></p>

我需要的是textarea标签有一个box-message类。

标签: django

解决方案


尝试这个:

class PostForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['message'].widget.attrs.update({'class': 'box-message'})

    class Meta:
    model = CandidateInfo
    fields = ("name", "email", "message")

阅读有关此的更多信息: Django 表单小部件


推荐阅读