私はかなりの数のエラーでいっぱいのプロジェクトに取り組んでいます。私は記事、文書、サードパーティのプラグインなどを手伝ってくれましたが、まだ何か不足しています。 Project: このプロジェクトは、ユーザーが私に連絡するための最後にフォームを備えた単純な1ページのWebサイトです。Djangoフォーム操作
質問: 1.このためのモデルを作成する必要はありますか?ユーザーがフォームに入力した内容をデータベースに保存することをお勧めしますか? 2. "forms.ModelForm"メソッドではなく "forms.Form"を使用してデータベースにユーザー入力を書き込む方法を教えてください。
問題: 私のフォームでは、「件名」のユーザーのオプションに応じて、「件名」を選択すると、より多くのフォームが表示されます。
- Djangoは、すべての入力が満たされている場合にのみフォーム全体を有効とマークしますが、オプションがあるためすべての入力が満たされるとは限りません。
コード:誰もが、私は、一般的に全体のコードより良くするために追加することができ代を知っていれば、上記とは別に
forms.py
class ContactForm(forms.Form):
first_name = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control', 'placeholder': 'First Name', 'id': 'first_name', 'name': "first_name"}),
max_length=30, min_length=3, required=True,label='')
last_name = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control', 'placeholder': 'Last Name', 'id': 'last_name', 'name': "last_name"}),
required=True,label='')
number = forms.IntegerField(widget=forms.NumberInput(
attrs={'class': 'form-control', 'placeholder': 'Phone Number', 'id': 'num', 'label': '', 'name': "number"}),
label='')
email = forms.EmailField(widget=forms.EmailInput(
attrs={'class': 'form-control', 'placeholder': 'Email', 'id': 'contact', 'label': '', 'name': "email"}),
required=True, label='')
subject_options = ('Subject', 'Book A Driver', 'Become A Driver', 'Ask A Question')
topic = forms.ChoiceField(choices=[(x, x) for x in subject_options], widget=forms.Select(
attrs={'class': 'form-control', 'placeholder': '', 'id': 'subject', 'label': '', 'name': "subject"}),
label='')
feedback_options = ('Feedback Means', 'Call', 'Email', 'Email and Call')
feedback = forms.ChoiceField(choices=[(x, x) for x in feedback_options], widget=forms.Select(
attrs={'class': 'form-control', 'placeholder': '', 'id': 'feedback', 'label': '', 'name': "feedback"}),
label='')
plan_options = ('Plan', 'Hourly', 'Daily', 'Monthly', 'Event Plan')
# plan = forms.ChoiceField(choices=[(x, x) for x in plan_options], widget=forms.Select(
# attrs={'class': 'form-control', 'placeholder': '', 'id': 'plan', 'label': ''}))
enquiry_message = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control',
'placeholder': 'Ask Us A Question', 'id': 'enquiry',
'name': "enquiry"}), label='')
driver_sex_option = ('Driver Sex ', 'Male', 'Female')
driver_sex = forms.ChoiceField(choices=[(x, x) for x in driver_sex_option], widget=forms.Select(
attrs={'class': 'form-control', 'placeholder': '', 'id': 'driver_sex', 'label': '', 'name': "driver_sex"}),
label='')
# driver_dress_options = ('Driver Dress', 'Casual', 'Official', 'Traditional', 'Any')
# driver_dress = forms.ChoiceField(choices=[(x, x) for x in driver_dress_options], widget=forms.Select(attrs={'class': 'form-control', 'placeholder': '', 'id': 'driver_dress', 'label': '', 'name':"driver_dress"}))
payment_options = ('Payment Plans', 'Cash', 'Credit Card')
payment = forms.ChoiceField(choices=[(x, x) for x in payment_options], widget=forms.Select(
attrs={'class': 'form-control', 'placeholder': '', 'id': 'pay', 'label': ''}), label='')
home_addres = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control',
'placeholder': 'Home Adress', 'id': 'address',
'name': "address"}))
residence_options = ('Years of Residency in Lagos', '1', '2', '3', '4', '5', 'More than 5', 'More than 10')
residence_years = forms.ChoiceField(choices=[(x, x) for x in residence_options],
widget=forms.Select(
attrs={'class': 'form-control', 'placeholder': '', 'id': 'residency',
'label': '', 'name': "residency"}))
lasdri = forms.CharField(widget=forms.TextInput(
attrs={'class': 'form-control', 'placeholder': 'LASDRI Certificate Number', 'id': 'certification',
'name': "certification"}),label='')
experience_options = ('Years of Experience', '1', '2', '3', '4', '5', 'More than 5', 'More than 10')
experience_years = forms.ChoiceField(choices=[(x, x) for x in experience_options], widget=forms.Select(
attrs={"class": 'form-control', 'placeholder': '', 'id': 'experience', 'label': '', 'name': "experience"}),
required=True, label='')
views.py:
def index(request):
form = ContactForm
if request.method == "POST":
form = ContactForm(request.POST)
if form.is_valid():
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
number = form.cleaned_data['number']
email = form.cleaned_data['email']
subject = form.cleaned_data['topic']
feedback = form.cleaned_data['feedback']
enqiry = form.cleaned_data['enquiry_message']
years = form.cleaned_data['experience_years']
sex = form.cleaned_data['driver_sex']
add = form.cleaned_data['home_addres']
plan = form.cleaned_data['plan']
pay = form.cleaned_data['pay' ]
cert = form.cleaned_data['lasdri' ]
residence = form.cleaned_data['residence_years']
return HttpResponse('Done')
`return render(request, 'information/index.html', {'form': form})`
template :
' {% csrf_token %}`<form action="" method="post" >
{{ form }}
<input type="submit" id="submit_btn" class="btn btn-info btn-lg" placeholder="Contact Us">`enter code here`
</form>
は、idがそれを本当に感謝しています。 私はかなり長いことを知っています。それを許してください。 ありがとうございます。
私はクリスピーフォームを使用して戻った。それは正常に働いた、ありがとう。 問題は、フォームがフォームを検証しておらず、その値をdb内のモデルで設定していないことです。 私はforms.pyを編集しましたが、views.pyはまだ同じです。
一つは応じて、フォーム定義のフィールドを必要とし、フォームの.clean()
方法で手動でチェックをしないことです。私は、これはあなたが私はあなたが2つのオプションがあり