私はDjangoプロジェクトで、後で連絡できるように人の名前と番号を取得するためのフォームを使用しています。 Djangoのドキュメントを含むいくつかのガイドラインに従っていますが、動作しないようです。私のテストPOSTはadminには表示されず、manage.pyシェルでもアクセスできません。私は、コード内に複数行のコメントを残して、私がちょうど試みた別の方法を示しました。私のmanage.py runserverログにもエラーがスローされません。Django:フォームデータをデータベースに保存する
フォーム:
from django import forms
class SubscribeForm(forms.Form):
name = forms.CharField(label='Your Name', max_length=100)
phone_number = forms.CharField(label='Phone Number', max_length=12, min_length=10)
テンプレート:
<form action="/success/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
ビュー:
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from datetime import datetime
from .models import Person
from .forms import SubscribeForm
def home(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = SubscribeForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
p = form.save()
'''
name = form.cleaned_data['name']
number = form.cleaned_date['phone_number']
p = Person(name=name, phone_number=number, date_subscribed=datetime.now(), messages_recieved=0)
p.save()
'''
# redirect to a new URL:
return HttpResponseRedirect('/success/')
# if a GET (or any other method) we'll create a blank form
else:
form = SubscribeForm()
return render(request, 'texting/index.html', {'form': form})
私はいくつかのビデオを見て、ページのように多くのを読んで、まだしていないようですしました作業。ステップは不要です)(
...
if form.is_valid():
name = form.cleaned_data['name']
number = form.cleaned_data['phone_number']
p = Person(name=name, phone_number=number, date_subscribed=datetime.now(), messages_received=0)
p.save()
...
form.save:
このコードは、通常のFormオブジェクトには保存メソッドがないため、エラーが発生します。エラーが表示されないため、フォームが有効でないか、別のビューに送信している必要があります。 –
@DanielRosemanダニエルありがとう、それを見落とした。私のテンプレートのアクションは '/ success /'なので、POSTメソッドはビュー 'success'(これはそれが働いているというテキストだけです)でコードを実行しています。だから私のテンプレートアクションを '/'(これは私が自分のコードを書いたところ)に変更すると保存されます。あなたが答えとしてそれを書いたければ、私はそれを受け入れるでしょう。 –