【问题标题】:facing issues with django forms面临 django 表单的问题
【发布时间】:2017-02-22 16:26:19
【问题描述】:

我在 django 表单中遇到了一些问题。问题是即使我把这个代码“attrs = {'class':'form-control'}”但是当去站点和检查元素时,html不包含这个类

它显示了这个...

<input id="id_name" maxlength="100" name="name" type="text" required="">

如您所见,它没有呈现 'class':'form-control'

我可能做错了什么请告诉我如何解决这个问题???

forms.py、view.py和.html文件代码如下

forms.py

from django import forms
from .models import ContactUs


class ContactUsForm(forms.ModelForm):
    name = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'form-control'})),
    email = forms.EmailField(required=True),
    subject = forms.CharField(required=True),
    message = forms.CharField(
        required=True,
        widget=forms.Textarea(attrs={'class': 'form-control'})
    ),
    class Meta:
        model = ContactUs
        fields = ['name', 'email', 'subject', 'message']

contact.html

<div class="container main-container">
<div class="row">
    <div class="col-xs-offset-1 col-xs-10 col-md-offset-1 col-md-5">
        <h5>Contact Us</h5>
        <form method="POST" action="/contact/">{% csrf_token %}
            {% for fields in form %}
            <div class="form-group">
            <label for="{{ fields.id_for_label }}">{{ fields.label }}</label>
            {{ fields }}
            </div>
            {% endfor %}
            <input class="btn btn-primary" type="submit" value="Submit">
        </form>
    </div>
</div>

views.py

from .forms import ContactUsForm
from django.shortcuts import render, redirect
from django.contrib import messages
from django.http import HttpResponseRedirect

def Contact(request):
    if request.method == 'POST':
        form = ContactUsForm(request.POST)
        if form.is_valid():
            model_instance = form.save()
            messages.add_message(request, messages.SUCCESS, 'YOUR FORM HAS BEEN SUBMITTED')
            return redirect('/contact/')
        else:
            return HttpResponseRedirect('/admin/')
    else:
        return render(request, 'core/contact.html', {'form': ContactUsForm()})

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    只需像下面这样更新您的 forms.py 类,它就会添加表单字段属性。

    forms.py

    class ContactUsForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            super(ContactUsForm, self).__init__(*args, **kwargs)
            self.fields['description'].widget = forms.TextInput(attrs={'class': 'form-control'})
            self.fields['message'].widget = forms.Textarea(attrs={'class': 'form-control'})
    
        name = forms.CharField(required=True)
        email = forms.EmailField(required=True)
        subject = forms.CharField(required=True)
        message = forms.CharField(required=True)
        class Meta:
            model = ContactUs
            fields = ['name', 'email', 'subject', 'message']
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多