2017-02-22 9 views
0

私はdjangoフォームでいくつかの問題に直面しています。問題は、このコードを "attrs = {'class': 'form-control'} 'と入れても問題ありませんが、siteとinspect-elementに行くと、htmlにはこのクラスが含まれませんdjangoフォームに問題があります

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

あなたはそれが「クラス」をレンダリングしていなかった見ることができるように:「フォームコントロール」を

私が何か間違ったことかもしれない。この問題を解決する方法を教えてください?

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()}) 

答えて

0

ちょうどその時、それはフォームフィールドの属性が追加されます以下のようなあなたの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'] 
+0

私の以前のforms.pyに何か問題があり、私のコードは –

+0

https://docs.djangoproject.com/en/1.10/refを働いていなかった理由を教えてくださいすることができます/ forms/widgets /#widget これは、あなたのforms.pyがうまくいかない理由を調べるのに役立ちます。 –

関連する問題