0

フォームの検証があります:

def contact(request):
if request.method == 'POST':
    form = AddForm(request.POST)
    if form.is_valid():
        #Saving to database
        return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
    form = AddForm() # An unbound form
return render(request, 'contact.html', {
    'form': form,
})

そして、データをデータベースに保存する方法を知りません。たとえば、テンプレートのフィールド「name: cofee 、category: food」にデータを入力します。では、データベースに保存するにはどうすればよいですか?

4

2 に答える 2

0

フィールドをデータベースに保存するには、 を使用するか、さらに簡単なModelFormnewを使用します。CreateView

あなたのviews.py

from django.views.generic.edit import CreateView
from django.views.generic.base import TemplateView
from django.core.urlresolvers import reverse_lazy

from yourapp.models import SomeModel

class CreateSomeModel(CreateView):
    model = SomeModel
    template_name = 'some_template.html'
    success_url = reverse_lazy('home')

class Home(TemplateView):
    template_name = 'home.html'

some_template.html

<form method="post">
  {% csrf_token %}
  {{ form }}
  <input type="submit">
</form>

home.html

<strong>This is the home page</strong>

urls.py

from django.conf.urls import patterns, url

from yourapp.views import CreateSomeModel
from yourapp.views import Home

urlpatterns = patterns('',
   url(r'^create/$', CreateSomeModel.as_view(), name='create'),
   url(r'^$', Home.as_view(), name='home'),)
于 2013-08-22T10:56:06.617 に答える
0

通常の戦略は、AddForm にデータを永続化する save メソッドを実装することです。save メソッドでデータの有効性を検証することをお勧めします: そうすれば、明示的に is_valid() メソッドを呼び出す必要はありません (errors 属性にアクセスすると、ベースの django フォーム クラスに実装されているクリーニングと検証のプロセスがトリガーされます)。 )

def contact(request):
    if request.method == 'POST':
        form = AddForm(request.POST)
        try:
            form.save()
        except:
            #handle exceptions
        return HttpResponseRedirect('/thanks/')
    else:
        form = AddForm() 
        return render(request, 'contact.html', {'form': form,})

# save method to put in your form class
def save(self):
    if not self.errors:
        to_save = ObjModel(<name_of_the_object_model_field> = self.cleaned['<name_of_your_form_field_containing_the_data>'])
        to_save.save()

これは、ドキュメントに記載されている概念を要約して、これを行う一般的な django の方法を説明するものです。もちろん、ニーズに合わせてこれを調整することもできます。

乾杯、

于 2013-08-22T10:31:24.280 に答える