相关疑难解决方法(0)

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

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

if request.method == 'POST':
    form = AuthorForm(request.POST,)
    if form.is_valid():
        form.save()
        # do something.
else:
    form = AuthorForm()
Run Code Online (Sandbox Code Playgroud)

但是,如果我想使用多个表单,我如何让视图知道我只提交其中一个表单而不是另一个表单(即它仍然是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')
Run Code Online (Sandbox Code Playgroud)

python forms django

175
推荐指数
5
解决办法
13万
查看次数

如何构建多个提交按钮django表单?

我有一个输入电子邮件的表单和两个提交按钮来订阅和取消订阅时事通讯:

<form action="" method="post">
{{ form_newsletter }}
<input type="submit" name="newsletter_sub" value="Subscribe" />
<input type="submit" name="newsletter_unsub" value="Unsubscribe" />
</form>
Run Code Online (Sandbox Code Playgroud)

我也有课堂形式:

class NewsletterForm(forms.ModelForm):
    class Meta:
        model = Newsletter
        fields = ('email',)
Run Code Online (Sandbox Code Playgroud)

我必须编写自己的clean_email方法,我需要知道哪个按钮是提交的形式.但提交按钮的值不在self.cleaned_data字典中.我能获得按钮的值吗?

python submit button django-forms

143
推荐指数
5
解决办法
10万
查看次数

如何在一个视图中处理两个表单?

我在一个模板中有两种完全不同的形式.如何在一个视图中处理它们?如何区分提交的表格?我怎样才能使用前缀来实现呢?或者也许最好写单独的视图?

尊重
克里斯

python django django-templates django-forms

5
推荐指数
1
解决办法
7626
查看次数

标签 统计

python ×3

django ×2

django-forms ×2

button ×1

django-templates ×1

forms ×1

submit ×1