在Django中在一个页面上处理多个表单的正确方法

在Django中在一个页面上处理多个表单的正确方法

我有一个期待两种形式的模板页面。如果我只使用一个表单,那么就像这个典型的例子一样好:

if request.method == 'POST':
    form = AuthorForm(request.POST,)
    if form.is_valid():
        form.save()
        # do something.else:
    form = AuthorForm()

但是,如果我想使用多个表单,我如何让视图知道我只提交其中一个表单而不是另一个表单(即它仍然是request.POST但我只想处理提交的表单事情)吗?


这是该解决方案基于这样的答案expectedphrasebannedphrase是不同形式和不同的提交按钮的名称expectedphraseformbannedphraseform是形式。

if request.method == 'POST':
    if 'bannedphrase' in request.POST:
        bannedphraseform = BannedPhraseForm(request.POST, prefix='banned')
        if bannedphraseform.is_valid():
            bannedphraseform.save()
        expectedphraseform = ExpectedPhraseForm(prefix='expected')
    elif 'expectedphrase' in request.POST:
        expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected')
        if expectedphraseform.is_valid():
            expectedphraseform.save() 
        bannedphraseform = BannedPhraseForm(prefix='banned')else:
    bannedphraseform = BannedPhraseForm(prefix='banned')
    expectedphraseform = ExpectedPhraseForm(prefix='expected')


慕勒3428872
浏览 2797回答 3
3回答

慕婉清6462132

你有几个选择:在两个表单的操作中放入不同的URL。然后你将有两个不同的视图函数来处理两种不同的形式。从POST数据中读取提交按钮值。您可以判断单击了哪个提交按钮:如何构建多个提交按钮django表单?
打开App,查看更多内容
随时随地看视频慕课网APP